C# 强制.NET与应用程序一起使用程序集而不是GAC

C# 强制.NET与应用程序一起使用程序集而不是GAC,c#,.net,assemblies,gac,C#,.net,Assemblies,Gac,我正在开发一个.NET应用程序。应用程序使用托管库。该应用程序仅适用于此库的特定版本 目前,我在应用程序旁边包含了库的DLL文件的副本。如果用户没有安装库,则此操作可以正常工作。问题是,如果用户安装了库的另一个版本,应用程序将使用该版本,而不是应用程序附带的版本 如何禁用或覆盖此行为?我试过用谷歌搜索它,我发现的唯一答案似乎要么与非托管程序集有关,要么与为未安装的库指定路径有关 编辑:我做了一些进一步的调查,结果发现该库的两个版本具有相同的版本号和公钥令牌,因此系统无法区分它们。因此,基本上我需

我正在开发一个.NET应用程序。应用程序使用托管库。该应用程序仅适用于此库的特定版本

目前,我在应用程序旁边包含了库的DLL文件的副本。如果用户没有安装库,则此操作可以正常工作。问题是,如果用户安装了库的另一个版本,应用程序将使用该版本,而不是应用程序附带的版本

如何禁用或覆盖此行为?我试过用谷歌搜索它,我发现的唯一答案似乎要么与非托管程序集有关,要么与为未安装的库指定路径有关

编辑:我做了一些进一步的调查,结果发现该库的两个版本具有相同的版本号和公钥令牌,因此系统无法区分它们。因此,基本上我需要强制系统使用提供的版本,而不是GAC中的版本,即使它认为它们是相同的。

您可以尝试将引用的特定版本设置为true

您可以在程序集引用的属性窗格中设置该属性。

您可以尝试将引用的特定版本设置为true


您可以在程序集引用的属性窗格中设置该属性。

这不是.NET的工作方式,它将仅在存在精确版本匹配时使用GAC中的DLL。确保app.config文件中没有bindingRedirect。并确保作者实际更改了[AssemblyVersion],而不是文件版本。如果他那样做了,你就完蛋了。我没有绑定重定向,我可以确认系统肯定使用的是来自GAC的重定向,而不是应用程序旁边的重定向。我相当确定库的程序集版本实际上是不同的,有没有办法确认这一点?使用Fuslogvw.exe来解决程序集解析问题。记录所有绑定,以便查看CLR做出的决定。如果问题看起来像希腊语,请在问题中发布跟踪。结果表明,尽管版本不同,但它们的版本号相同。这不是.NET的工作方式。只有在版本完全匹配时,它才会使用GAC的DLL。确保app.config文件中没有bindingRedirect。并确保作者实际更改了[AssemblyVersion],而不是文件版本。如果他那样做了,你就完蛋了。我没有绑定重定向,我可以确认系统肯定使用的是来自GAC的重定向,而不是应用程序旁边的重定向。我相当确定库的程序集版本实际上是不同的,有没有办法确认这一点?使用Fuslogvw.exe来解决程序集解析问题。记录所有绑定,以便查看CLR做出的决定。如果问题看起来像希腊语,则在问题中发布跟踪。结果表明,它们具有相同的版本号,即使它们不同。这只在编译时起作用。这只在编译时起作用。