由于同一程序集的不同版本,Visual C#项目无法运行
我的 C# 应用程序使用两个不同的预打包解析器,每个解析器使用不同的 Antlr.Runtime.dll 强版本。
应用程序抛出 FileLoadException,显然是因为它仅正确加载了其中一个版本,而无法找到另一个版本。
请注意,我无法使用程序集别名,因为我的代码不直接调用版本化程序集 - 它们只是通过解析器程序集间接调用。
这是指示 Visual Studio 将不同版本的 dll 放置在单独的目录中的问题,因为它们具有相同的名称?我想尽可能避免使用 GAC。
我读过很多“并排”和相关文章,但似乎没有一个解决这个问题。
My c# application uses two different pre-packaged parsers, that each use a different strong version of Antlr.Runtime.dll.
The application throws a FileLoadException, apparently because it correctly loaded only one of the versions and could not find the other.
The <app>\bin\x86\Debug directory contains only one copy of the dll.
Note that I cannot use assembly aliases since my code doesn't directly call the versioned assemblies - they are only indirectly called via the parser assemblies.
Is this a matter of instructing Visual Studio to place the differently versioned dlls in separate directories since they have the same name? I'd like to avoid using the GAC as far as possible.
I've read many "side by side" and related articles, but none seem to address this question.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我绝不是 SxS 专家,但在我的公司,当发生这种情况时,他们会为每个程序集创建一个不同的文件夹,并创建一个清单来加载它们。
I'm in no way a SxS expert but at my company when this happens they create a different folder for each assembly and a manifest to load them.
通过挂钩 AppDomain.AssemblyResolve 解决了这个问题:
Solved this problem by hooking AppDomain.AssemblyResolve: