Visual Studio 解决.NET程序集名称冲突

pzfprimi  于 2022-11-17  发布在  .NET
关注(0)|答案(2)|浏览(216)

我当前有一个引用“SomePackage.dll”和“SomeUtilities.dll”的.NET应用程序。SomePackage.dll包含在一个单独的文件夹中,它所依赖的一个程序集也命名为“SomeUtilities.dll”。
换句话说,我在项目中添加了对\somePath\SomePackage.dll的引用,并且存在SomePackage.dll所依赖的文件\somePath\SomeUtilities.dll。由于我在项目中已经有了对名为SomeUtilities.dll的程序集的引用,因此无法添加对\somePath\SomeUtilities.dll的引用。
因此,当我尝试从SomePackage.dll执行应用程序并初始化中的模块时,收到错误:

Could not load file or assembly 'SomeUtilities.dll..." or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.'

为了解决这个问题,我在VS开发人员命令提示符中使用了 gacutil,将\somePath\SomeUtilities.dll添加到GAC。现在,两个程序集都得到了很好的解析,但我想知道是否有更好的方法来解决这个名称冲突,而不涉及添加到GAC。我担心安装到GAC时可能会出现potential issues问题。并听说.NET能够通过查看某些子文件夹来解析程序集,但我不确定在哪里可以找到有关此概念的更多信息。

wj8zmpe1

wj8zmpe11#

您可以使用绑定重定向。
打开.config文件以查找

的位置< assemblyBinding>
移除指< assemblyBinding>涉。
在软件包管理器控制台中键入:添加绑定重定向。

q9yhzks0

q9yhzks02#

Windows/.NET有一个名为FUSLOGVW.exe的工具,可以帮助查找程序集的问题。这个工具很有用,但是筛选日志很麻烦。有一个开源工具是FUSLOGVW.exe的 Package 器,可以更容易地筛选数据并找到问题的根源。我会使用这个工具
https://github.com/awaescher/Fusion

相关问题