我需要获取一个已构建的 C# 应用程序并更改其中一个引用的 dll。如何最好地做到这一点?我的参考 dll 已关闭特定版本,但是当我尝试用新版本替换 dll 时,就会出现“无法加载文件或程序集 XXXXX,Version=XXXXX”错误。有没有办法让加载器不关心 dll 的版本,以便 dll 只会尝试加载?
我需要获取一个已构建的 C# 应用程序并更改其中一个引用的 dll。如何最好地做到这一点?我的参考 dll 已关闭特定版本,但是当我尝试用新版本替换 dll 时,就会出现“无法加载文件或程序集 XXXXX,Version=XXXXX”错误。有没有办法让加载器不关心 dll 的版本,以便 dll 只会尝试加载?
app.config
文件添加bindingRedirect
,如下所示(直接从文章中复制):<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
几点说明:
如果您还没有明确指定语言文化(许多人没有这样做),它将是“中立”的而不是“en-us”。
如果您还不知道,可以使用强名称实用程序获取程序集的公钥令牌,例如:sn -t [AssemblyPath]
Publisher Policy File
来引用任何版本的Microsoft.Office.Interop.PowerPoint
程序集? - JohnB