Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Nuget.VisualStudio安装Nuget软件包时,如何生成绑定重定向?_C#_.net_Nuget_Vsx - Fatal编程技术网

C# 使用Nuget.VisualStudio安装Nuget软件包时,如何生成绑定重定向?

C# 使用Nuget.VisualStudio安装Nuget软件包时,如何生成绑定重定向?,c#,.net,nuget,vsx,C#,.net,Nuget,Vsx,我正在编写一个VS扩展,它需要向项目中添加一个NuGet包。我正在使用建议的接口,特别是IVsPackageInstaller.InstallPackage(string,Project,string,string,bool)方法。软件包安装得很好,packages.config被更改为包含相关版本-但是通常在安装NuGet软件包时生成的绑定重定向没有被创建 是否有一种“正确”的方法来做到这一点(即调用公共可访问的API),或者仅仅是“滚动您自己的”方法,在这种方法中,app.config被有效

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


是否有一种“正确”的方法来做到这一点(即调用公共可访问的API),或者仅仅是“滚动您自己的”方法,在这种方法中,app.config被有效地修改,就像它是XML一样?

绑定重定向在项目级别工作,我们通常在项目文件或.config文件中绑定重定向,这些都适用于项目

在NuGetAPI中,它不提供修改项目文件和项目配置文件的方法。它只更改packages.config文件,该文件仅适用于NuGet软件包

有两种方法可以实现绑定重定向。一个是如您所述修改app.config。另一种方法是在代码中绑定重定向。您可以参考下面的代码


这有点误导——NuGet API更改了packages.config——但也添加了对项目的引用。我理解它是如何工作的-但这是一个VS扩展-因此对于我来说,要使用AssemblyResolve处理程序重定向代码中的绑定,我必须生成一些代码并将其添加到正在构建的项目中-这可能比简单地修改app.config要简单。Nuget API只提供安装,删除项目中的包。安装/删除过程将在项目中添加/删除引用,从而导致项目文件更改。但它只引用相应的程序集。当有不同的版本时,它不会重定向它。