无需复制C:\ Programs文件中的参考dll

时间:2019-01-24 20:30:56

标签: c# dll vsto

我有一个vsto Outlook,它引用了我的库 my.dll 。该dll引用C:\ Programs Files \ company \ dummy.dll

中的第三方 dummy.dll

objectif是如果 dummy.dll 被更改,它将与 my.dll

独立

my.dll 项目中:

如果将本地复制设置为true,则将 dummy.dll 复制到垃圾箱,这与我的预期不符,因为 my.dll 不知道关于 dummy

的较新版本

如果将本地副本设置为false,则会出现异常,因为找不到文件。

我在Microsoft的article和其他SO帖子中找到了他们,他们谈论的是GAC,.config或AssemblyResolve,但我认为这不像我的情况,因为它是vsto。

如何在c:\ program文件中使用dummy.dll而不进行复制?

2 个答案:

答案 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>