2017-09-20 105 views
1

我正在寫一個VS擴展,它需要添加一個NuGet包到一個項目中。我正在使用建議here的接口,特別是IVsPackageInstaller.InstallPackage(string, Project, string, string, bool)方法。該軟件包安裝得很好,packages.config被更改爲包含相關版本 - 但是,安裝NuGet軟件包時通常生成的綁定重定向尚未創建。如何在使用Nuget.VisualStudio安裝NuGet包時生成綁定重定向?

是否有一個「正確」的方式做到這一點(即調用公開訪問API)或只有「滾你自己」的一種方式,其中在app.config有效修改,如果它是XML?

回答

0

綁定重定向工作在項目層面上,我們經常綁定在項目文件或config文件重定向,這是所有工作項目。

而在API的NuGet,它並沒有提供這樣的方法來修改項目文件和項目配置文件。它只會改變僅適用於NuGet包的packages.config文件。

有兩種方法來實現綁定重定向。一個是修改你提到的app.config。另一種方法是在代碼中綁定重定向。你可以參考下面的代碼。

SideBySide Error with Binding Redirect in .net Windows Service

+0

這是有些誤導 - 的的NuGet API改變packages.config - 但也增加了項目的引用。我理解它是如何工作的 - 但這是一個VS擴展 - 所以爲了使用AssemblyResolve處理程序重定向代碼中的綁定,我必須生成一些代碼並將其添加到正在構建的項目中 - 這可能不那麼簡單而不僅僅是修改app.config。 –

+0

Nuget API僅提供安裝,刪除項目中的軟件包。安裝/刪除過程會將項目引用添加/刪除,導致項目文件更改。但它只引用相應的程序集。當有不同的版本時它不會重定向它。 –