自动绑定重定向

Wjd*_*is5 21 c# visual-studio

运行VS 2017,最新更新.

文档指出要启用自动绑定重定向,您可以修改csproj文件并在相应的下添加以下内容<PropertyGroup>:

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
Run Code Online (Sandbox Code Playgroud)

从历史上看,我的项目在app.config中有一些绑定重定向条目.我最近更新了解决方案的所有nuget包,并在提交中修改了几个绑定重定向条目以匹配新版本.

我想确保一切都很好去QA所以我删除了App.Config中的所有条目,认为它们将在下一个版本中重新生成(正如文档建议的那样).

令我惊讶的是,在clean/build上的app.config中没有添加任何内容.

所以我的问题是,可以安全地假设通过整合解决方案中的依赖关系我不再需要它们吗?

或者有什么问题,VS应该生成重定向并且失败.

Jac*_*rão 26

看看这篇文章:

https://weblog.west-wind.com/posts/2014/Nov/29/Updating-Assembly-Redirects-with-NuGet

有一个命令强制Nuget重新编写解决方案配置文件中的所有程序集重定向.

只需在Package Manager控制台上尝试:

PM> Get-Project –All | Add-BindingRedirect
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不会自行清理并删除任何现在未使用的内容.像OP一样首先删除它们然后运行它是唯一的方法来获得一个干净的重定向列表. (5认同)
  • 这不适用于 PackageReference NuGet 格式,请参阅 https://github.com/NuGet/Home/issues/7432 (4认同)

Kau*_*ano 6

有一个警告将自动生成您丢失的重定向。

  1. 清理你的项目
  2. 构建您的项目
  3. 转到错误列表过滤器并激活警告过滤器
  4. 过滤主项目的警告
  5. 查找包含如下消息的警告:

    发现同一依赖程序集的不同版本之间存在冲突。在 Visual Studio 中,双击此警告(或选择它并按 Enter 键)以修复冲突;否则,将以下绑定重定向添加到应用程序配置文件中的“运行时”节点

  6. 按照消息进行操作。点击它!

更新:您必须在项目属性 -> 应用程序 -> 自动生成绑定重定向中激活警告

  • 单击警告只会打开此文件“C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets”,甚至不会将重定向复制到 cliupboard! (5认同)

Daw*_*ski 5

这是因为未修改源app.config,仅输出了(在编译步骤中创建并放置在Debug / Release文件夹中的应用程序配置文件)。

从Visual Studio 2013开始,面向.NET Framework 4.5.1的新桌面应用程序将使用自动绑定重定向。这意味着,如果两个组件引用同一强命名程序集的不同版本,则运行时会在输出应用程序配置(app.config)文件中自动向该程序集的较新版本添加绑定重定向。此重定向优先于否则可能发生的程序集统一。源app.config文件未修改。

资源

源app.config中的重定向由Nuget本身生成。您已通过对软件包进行更改来触发它。

  • 它应该如何与ASP.NET一起使用?web.config未复制到/ bin文件夹。 (2认同)