C# NET中的程序集重定向
我有一个C.net exe,我在其中添加了对第三方dll的引用 这些第三方dll是在GAC中注册的强名称程序集 我用第三方dll的SAY版本7.0编译我的程序 当我试图在一台拥有第三方dll的机器上注册我的C.net exe程序时,可能会在GAC中注册任何高于7.0的版本 如果在少数机器上随机失败,说明找不到程序集版本7.0,则当我使用目标机器中的dll版本重新编译C项目时,类型未再次注册。该项目已成功运行 注: A.假设该项目最初是使用汇编版本7.0.4.82编译的,并尝试在11.0.367.0中运行。 BTest.Framework、Test.Core是引用的程序集 为解决下列问题而采取的步骤: 使用以下app.config文件尝试了程序集重定向技术 请给我一些解决方法 提前感谢。我的建议: 打开Fusion日志记录,请参见 不要依赖安装在GAC中的组件。不要在GAC的VS项目中引用它们,而是将它们添加到单独目录中的源代码存储库中,然后从那里引用。这样,您就可以控制应用程序使用的第三方程序集的版本。看看我们是怎么做到的。 我的建议是: 打开Fusion日志记录,请参见 不要依赖安装在GAC中的组件。不要在GAC的VS项目中引用它们,而是将它们添加到单独目录中的源代码存储库中,然后从那里引用。这样,您就可以控制应用程序使用的第三方程序集的版本。看看我们是怎么做到的。C# NET中的程序集重定向,c#,.net,C#,.net,我有一个C.net exe,我在其中添加了对第三方dll的引用 这些第三方dll是在GAC中注册的强名称程序集 我用第三方dll的SAY版本7.0编译我的程序 当我试图在一台拥有第三方dll的机器上注册我的C.net exe程序时,可能会在GAC中注册任何高于7.0的版本 如果在少数机器上随机失败,说明找不到程序集版本7.0,则当我使用目标机器中的dll版本重新编译C项目时,类型未再次注册。该项目已成功运行 注: A.假设该项目最初是使用汇编版本7.0.4.82编译的,并尝试在11.0.367.
为什么不将所需的版本与应用程序一起分发?在GAC中注册所需版本的安装部署。DLL供应商可能会提供一个合并模块,您可以直接放入安装中
或者,按照Igor的建议,只使用DLL的本地副本 为什么不将所需的版本与应用程序一起分发?在GAC中注册所需版本的安装部署。DLL供应商可能会提供一个合并模块,您可以直接放入安装中
或者,按照Igor的建议,只使用DLL的本地副本 请发布您获得的完整异常堆栈跟踪。请发布您获得的完整异常堆栈跟踪。
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" >
<dependentAssembly>
<assemblyIdentity
name="Test.Framework"
publicKeyToken="ebf6b2ff4d0a08aa" culture ="neutral"/>
<bindingRedirect oldVersion="7.0.4.82"
newVersion="11.0.367.0" />
<publisherPolicy apply="no" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="Test.Core"
publicKeyToken="ebf6b2ff4d0a08aa" culture ="neutral"/>
<bindingRedirect oldVersion="7.0.4.82"
newVersion="11.0.367.0" />
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>