Visual studio 在Visual Studio中添加BindingRedirect';不要修改任何app.config或web.config文件

Visual studio 在Visual Studio中添加BindingRedirect';不要修改任何app.config或web.config文件,visual-studio,nuget,Visual Studio,Nuget,我在VisualStudio的NuGet package manager控制台中读到了这个很酷的AddBindingRedirect命令,它将更新所有绑定重定向。这听起来很神奇,因为我们的重定向是一个巨大的混乱。我运行了以下命令: Add-BindingRedirect * 它吐出一堆东西: Name : Newtonsoft.Json Culture : neutral PublicKeyToken : 30ad4f

我在VisualStudio的NuGet package manager控制台中读到了这个很酷的
AddBindingRedirect
命令,它将更新所有绑定重定向。这听起来很神奇,因为我们的重定向是一个巨大的混乱。我运行了以下命令:

Add-BindingRedirect *
它吐出一堆东西:

Name                  : Newtonsoft.Json
Culture               : neutral
PublicKeyToken        : 30ad4fe6b2a6aeed
ProcessorArchitecture : 
NewVersion            : 12.0.0.0
OldVersion            : 0.0.0.0-12.0.0.0
AssemblyNewVersion    : 12.0.0.0
CodeBaseHref          : 
CodeBaseVersion       : 
PublisherPolicy       : 

Name                  : Microsoft.ApplicationInsights
Culture               : neutral
PublicKeyToken        : 31bf3856ad364e35
ProcessorArchitecture : 
NewVersion            : 2.13.1.12554
OldVersion            : 0.0.0.0-2.13.1.12554
AssemblyNewVersion    : 2.13.1.12554
CodeBaseHref          : 
CodeBaseVersion       : 
PublisherPolicy       : 

Name                  : System.Memory
Culture               : neutral
PublicKeyToken        : cc7b13ffcd2ddd51
ProcessorArchitecture : 
NewVersion            : 4.0.1.1
OldVersion            : 0.0.0.0-4.0.1.1
AssemblyNewVersion    : 4.0.1.1
CodeBaseHref          : 
CodeBaseVersion       : 
PublisherPolicy       : 

Name                  : System.Numerics.Vectors
Culture               : neutral
PublicKeyToken        : b03f5f7f11d50a3a
ProcessorArchitecture : 
NewVersion            : 4.1.4.0
OldVersion            : 0.0.0.0-4.1.4.0
AssemblyNewVersion    : 4.1.4.0
CodeBaseHref          : 
CodeBaseVersion       : 
PublisherPolicy       : 

Name                  : System.Runtime.CompilerServices.Unsafe
Culture               : neutral
PublicKeyToken        : b03f5f7f11d50a3a
ProcessorArchitecture : 
NewVersion            : 4.0.5.0
OldVersion            : 0.0.0.0-4.0.5.0
AssemblyNewVersion    : 4.0.5.0
CodeBaseHref          : 
CodeBaseVersion       : 
PublisherPolicy       : 

Name                  : System.Buffers
Culture               : neutral
PublicKeyToken        : cc7b13ffcd2ddd51
ProcessorArchitecture : 
NewVersion            : 4.0.3.0
OldVersion            : 0.0.0.0-4.0.3.0
AssemblyNewVersion    : 4.0.3.0
CodeBaseHref          : 
CodeBaseVersion       : 
PublisherPolicy       : 

... Tons more
但是,它不会修改单个
app.config
web.config
文件。我还尝试手动删除所有绑定重定向,然后运行命令。仍然没有修改任何内容。我正在运行VisualStudio201916.5.3。有没有关于我做错了什么的想法,或者这不是我希望的方式?谢谢

在Visual Studio中添加BindingRedirect不会修改任何app.config或 web.config文件

这是很不正常的行为。我想知道你面对这个问题时是否有错误

在我这边,我创建了一个新项目,并在
Package Manager控制台上运行
Add BindingRedirect*
,它可以在
app.config
web.config
文件中添加相关的绑定重定向

您的nuget软件包可能有错误,请尝试以下步骤:

步骤

1)关闭VS实例,删除
.VS
隐藏文件夹、
bin
obj
文件夹,然后重新启动项目

2)首先右键单击解决方案-->restore nuget Packages运行nuget restore,以防某些nuget软件包丢失,这将中断该命令行

3)通过
extensions
-->禁用任何第三方扩展,以防它们影响扩展

4)打开
软件包管理器控制台
-->键入以下内容:

update-package -reinstall

Add-BindingRedirect *
重新安装nuget软件包是为了防止nuget软件包被错误引用

除了,还需要重新安装一些绑定重定向,新版本的nuget将自动更新并添加到文件中

5)创建一个新的空项目并安装几个nuget软件包,以测试问题是否与特定项目本身或nuget本身有关

此外,有关更多信息,您可以参考

--------------更新1--------------

很抱歉,上面的答案是基于我不知道您使用的是
PackageReference
nuget管理格式

我认为您的解决方案包含很多项目,一些使用Packages.config,而另一个使用
PackageReference
格式

但是,
addbindingRedirect*
只适用于带有
packages.config
的项目。看见使用
PackageReference
格式,它不会自动在
app.config
web.config
上添加或更新任何绑定重定向

除此之外,因为您的解决方案中有几个项目使用了
packages.config
格式,因此使用此命令时,
PackageReference
上的此缺陷将被覆盖

为了证明这一点,您可以使用
PackageReference
创建一个新的单个框架项目,我确信当您键入该命令时,它将无法工作

作为建议

1)您可以在项目的
xxxx.csproj
中添加此xml节点

 <PropertyGroup>
 <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
 <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

)


2)或者只需将项目中的
PackageReference
更改为
Packages.config
,即可使用该命令而不会出现任何错误。但这可能是一项艰苦的工作。如果你想要它,首先更改回
工具下的
Package.config
-->
选项下的
-->
NuGet Package Manager
-->
包管理
,然后您就可以使用了。

您在您的net framework项目中使用了
PackageReference
NuGet管理格式吗?@PerryQian MSFT是的。我将对此进行一次尝试,然后返回你很快就会回来!因此,
updatepackage
命令运行了7分钟,破坏了应用程序中的很多东西。主页现在因
而崩溃。此模块要求HttpApplication(全局应用程序类)实现IContainerProviderAccessor。
-因此,鉴于QA命中,此命令似乎有点太危险,我们可能会对其进行测试!我同意我们的解决方案中可能有什么东西打破了这一点。大量的信息,谢谢!是的,我们有40个项目在这个解决方案。我认为除了两个“web项目”(因为它们与新格式不兼容)之外,所有内容都使用新的CSPROJ格式。所以,我想这就是发生的事。没有兴趣更改回packages.config。我不知道,
AutoGenerateBindingRedirects
属性,所以肯定会尝试更多的东西!再次感谢。。