- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将我的解决方案中的所有 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 包)
SomePackage.dll
AnotherPackage.dll
并且两个 DLL 都引用了 BasePackage.dll
, 但他们每个人都引用了不同版本的 BasePackage.dll
,例如:
SomePackage.dll
引用文献 BasePackage.dll
版本 1。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/
您可以使用BindingRedirect将 YourAssembly.dll 1.1.0.0 重定向到 1.2.0.0。 如果程序集名称不同,有谁知道是否可以这样做。 例如。 YourAssembly
我在初始化云服务时收到异常: System.IO.FileLoadException:无法加载文件或程序集“Microsoft.WindowsAzure.Storage,Version=2.1.0.0
我有一个绑定(bind)重定向,它在一台机器上有效,但在另一台机器上无效。 我已经使用 fuslogvw 查看了这个日志,它是这样写的: LOG: Attempting download of new
我们有一个插件文件夹,我们可以从中加载程序集。大多数情况下这很好。但是,我们有 1 个使用 System.Core 版本 2.0.5.0 的第 3 方插件。 我们使用 .Net 4,因此我们在 PC
我有项目 A,它引用程序集 B 和程序集 C。程序集 B 也引用程序集 C,但在不同于项目 A 的版本中。两个程序集(B 和 C)都通过 NuGet 在项目 A 中引用(尽管两者都是程序集在我自己的控
在某些客户端使用版本 11 而不是版本 10 的情况下,我使用 bindingRedirect 将 TFS 程序集从版本 10 重定向到版本 11。该应用程序是使用 TFS v10 DLL 编译的。
对于 ASP.NET 应用程序,Web.Config 文件中有几个条目,格式如下: 这些库以 NuGet 包的形式出现。 现在每次更新我的 20 多个 NuGet 包时,我都会
这个问题在这里已经有了答案: Why NuGet adds app.config with assemblyBinding to LIBRARY projects during a NuGet pa
我创建了一个简单的 Win32 应用程序,通过包含对版本 6 commctl32.dll 的明显依赖来演示 XP 上的 UXtheme然后我创建了一个简单的 Win32 dll,使用 ISOLATIO
我正在尝试将我的解决方案中的所有 DLL 版本与许多项目同步。我注意到我的 app.config 包含几个程序集绑定(bind)重定向,如下所示: 但是,据我所知,通过
我有一个 .Net 标准库,在尝试使用其中一个依赖库时出现错误,我认为这是由于版本冲突。在旧式 .Net 类库中,我可能会添加如下内容:
我在我的 web.config 中使用“bindingRedirect”元素来允许更新我引用的程序集而无需重新编译我的网站。但我仍然收到同样的错误: 无法加载文件或程序集“Oracle.DataAcc
我在 app.config 文件中引用需要 bindingRedirect 的第三方 dll,如下所示: ...
我有一个 VS 扩展,它应该使用 Gmail api 向我公司的某些用户发送邮件。 在开发过程中,我遇到了 System.Net.Http.Primitives 的常见问题。在 Google API
我有一个针对 F# runtime 4.4.1 的单元测试项目。它有一个带有 bindingRedirect 部分的 app.config: True 但是,当
在编译引用 Entity Framework 6 的项目时,它会偷偷地在输出配置文件中插入以下 assemblyBinding: 有什么办法可以取消吗?请注意,该部
所以我遇到了一个问题,就像我看到其他张贴者在使用 NuGet 安装 FluentNhibernate 后遇到的问题: 错误 Could not load file or assembly 'NHibe
我有一个使用 SignalR 和 Ext.net 的项目。两者都需要 Newtonsoft.Json。 SignalR 需要 Newtonsoft.Json 4.5.0.0,Ext.net 需要 4.
是 在完整的 .NET Framework 之外受支持?例如,普通的 .NET 应用程序支持以下内容(在 app.config 或 web.config 中):
我有一个中等复杂的应用程序,有一个针对 .NET Framework 4.6.1 的单元测试项目 如果我在包管理控制台中运行以下命令: update-package -reinstall -proje
我是一名优秀的程序员,十分优秀!