如何在使用Nuget.VisualStudio安装NuGet包时生成绑定重定向?

问题描述:

我正在写一个VS扩展,它需要添加一个NuGet包到一个项目中。我正在使用建议here的接口,特别是IVsPackageInstaller.InstallPackage(string, Project, string, string, bool)方法。该软件包安装得很好,packages.config被更改为包含相关版本 - 但是,安装NuGet软件包时通常生成的绑定重定向尚未创建。如何在使用Nuget.VisualStudio安装NuGet包时生成绑定重定向?

是否有一个“正确”的方式做到这一点(即调用公开访问API)或只有“滚你自己”的一种方式,其中在app.config有效修改,如果它是XML?

绑定重定向工作在项目层面上,我们经常绑定在项目文件或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仅提供安装,删除项目中的软件包。安装/删除过程会将项目引用添加/删除,导致项目文件更改。但它只引用相应的程序集。当有不同的版本时它不会重定向它。 –