我有一个vsto Outlook,它引用了我的库 my.dll 。该dll引用C:\ Programs Files \ company \ dummy.dll
中的第三方 dummy.dllobjectif是如果 dummy.dll 被更改,它将与 my.dll
独立在 my.dll 项目中:
如果将本地复制设置为true,则将 dummy.dll 复制到垃圾箱,这与我的预期不符,因为 my.dll 不知道关于 dummy
的较新版本如果将本地副本设置为false,则会出现异常,因为找不到文件。
我在Microsoft的article和其他SO帖子中找到了他们,他们谈论的是GAC,.config或AssemblyResolve,但我认为这不像我的情况,因为它是vsto。
如何在c:\ program文件中使用dummy.dll而不进行复制?
答案 0 :(得分:0)
如果DLL位于应用程序的子目录中,则可以告诉.NET使用应用程序配置的probing path部分绑定到它。
如果DLL不在应用程序的子目录中,则必须将其放入global assembly cache中。这是not usually recommended。
最简单的方法是复制文件。这就是这种事情通常的处理方式。在.NET之前,DLL可以在任何地方,但是这种安排通常会导致所谓的DLL Hell。拥有DLL的私有副本可以缓解许多部署问题,并且磁盘空间的使用不成问题。
答案 1 :(得分:0)
您最好的选择是使用该文章中的exe.config选项。我们总是这样做,以引用该方目录中的第三方应用程序dll。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyAssembly2" publicKeyToken="307041694a995978"/>
<codeBase version="1.0.1524.23149" href="C:\Myassemblies\MyAssembly2.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>