如何在 C# 应用程序中使用特定版本的 GAC 程序集
How to use GAC assembly with specific version in C# app
我有 2 个名为 AAA 的 GAC 程序集(版本 1.0.0.0 和版本 2.0.0.0)。该应用程序当前使用的是版本 1(由 Browse-for-assembly 添加的引用,路径已硬编码到该文件),但我想使用版本 2。
为了顺利完成,我在app.config中添加了一些代码:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="AAA"
publicKeyToken="dd8b40231cb0196b"
culture="en-us" />
<!-- Assembly versions can be redirected in app,
publisher policy, or machine configuration files. -->
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
但应用程序仍在使用 1.0.0.0 版本的程序集,为什么?
culture="en-us" />
错了,包含代码的程序集总是中立的。只有卫星集会才有文化。或者换句话说,您的 bindingRedirect 与应用程序要求的任何程序集都不匹配。所以没有作用。请务必从项目的 bin\Debug 目录中删除该程序集,以便您可以诊断此类错误。 Fuslogvw.exe 实用程序也非常方便,记录所有绑定。
修复:
culture="neutral" />
我有 2 个名为 AAA 的 GAC 程序集(版本 1.0.0.0 和版本 2.0.0.0)。该应用程序当前使用的是版本 1(由 Browse-for-assembly 添加的引用,路径已硬编码到该文件),但我想使用版本 2。
为了顺利完成,我在app.config中添加了一些代码:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="AAA"
publicKeyToken="dd8b40231cb0196b"
culture="en-us" />
<!-- Assembly versions can be redirected in app,
publisher policy, or machine configuration files. -->
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
但应用程序仍在使用 1.0.0.0 版本的程序集,为什么?
culture="en-us" />
错了,包含代码的程序集总是中立的。只有卫星集会才有文化。或者换句话说,您的 bindingRedirect 与应用程序要求的任何程序集都不匹配。所以没有作用。请务必从项目的 bin\Debug 目录中删除该程序集,以便您可以诊断此类错误。 Fuslogvw.exe 实用程序也非常方便,记录所有绑定。
修复:
culture="neutral" />