2017-03-09 142 views
0
X <= nuget package A <= DLL version 1 
X <= nuget package B <= DLL version 2 

所以我的项目X引用了两个第三方nuget软件包A和B.这两个软件包引用相同的DLL但具有不同的版本。现在问题似乎是在构建时,DLLv1被binv文件夹中的DLLv2覆盖。并且在运行时,A中的代码抱怨DLLv1未找到。无法加载文件或程序集或其某个依赖项。系统找不到指定的文件

我已经在bin文件夹中添加了一个程序集绑定配置文件来绑定到DLLv2。但是这似乎没有改变任何东西。

这是一个使用msbuild构建的CSharp项目。

问题:

  1. 是AssemblyBinding解决这个问题的正确工具吗?
  2. 解决此问题的正确方法是什么?
+0

简单...不要这样做。您应该让解决方案中的所有项目都引用相同版本的软件包。 –

+0

nuget包是第三方,我无法控制他们使用的DLL版本。 – Lee

+0

除非第三方库已固定特定版本,否则应该可以在整个消费项目中管理和安装共享依赖项。您的箱中只能有一个文件名实例。如果这不起作用,则需要将项目拆分为多个入口点,每个入口点都具有特定版本的公共库 –

回答

0

我找到了我的问题的根本原因。我的程序在PowerShell中运行,PowerShell不会加载我的应用程序的配置。我需要让PowerShell的配置有我的绑定。

相关问题