gpt4 book ai didi

c# - Nuget在哪里获取项目-All | Add-BindingRedirect 获取其版本号?

转载 作者:太空狗 更新时间:2023-10-29 23:49:21 25 4
gpt4 key购买 nike

我正在尝试将我的解决方案中的所有 DLL 版本与许多项目同步。我注意到我的 app.config 包含几个程序集绑定(bind)重定向,如下所示:

  <dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.1" newVersion="4.0.2.1" />
</dependentAssembly>

但是,据我所知,通过 NuGet 包管理器,没有包需要合并,所有项目都指向该程序集的版本 4.4.1

我试着听从 this blog post 的建议.我删除了所有绑定(bind)重定向并尝试通过以下方式重新生成:

Get-Project -All | Add-BindingRedirect

根据NuGet Documentation Add-BindingRedirect 应该检查项目输出路径。我假设这意味着 bin 文件夹。

但是在清理和重建之后 Get-Project -All | Add-BindingRedirect 仍在我的 app.config 中生成相同的重定向。

NuGet Get-Project -All | 在哪里? Add-BindingRedirect 获取其版本号?

这些不正确的 NuGet 包版本可能来自哪里?

最佳答案

是的,Add-BindingRedirect添加 <assemblyBinding>即使在清除输出文件夹中的所有文件后,也将标记添加到配置文件中(似乎文档在这方面不准确!!)。

显然 Add-BindingRedirect扫描所有引用的 DLL 及其所有依赖项,如果在整个依赖项树中发现任何冲突,它会生成所需的 assemblyBinding

例子

如果您有一个名为“MyProject”的 csproj,它引用了两个 DLL(来自两个不同的 Nuget 包)

  1. SomePackage.dll
  2. AnotherPackage.dll

并且两个 DLL 都引用了 BasePackage.dll , 但他们每个人都引用了不同版本的 BasePackage.dll ,例如:

  1. SomePackage.dll引用文献 BasePackage.dll版本 1。
  2. AnotherPackage.dll引用 BasePackage.dll版本 2。

当你运行 Add-BindingRedirect命令,它将扫描“MyProject”引用的所有 DLL 并在 BasePackage 中发现此冲突引用,然后将类似的内容添加到您的配置文件中。

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="BasePackage" publicKeyToken="50bd4fe62226aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>

关于c# - Nuget在哪里获取项目-All | Add-BindingRedirect 获取其版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48715745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com