2

我有一个可执行文件,例如从 C: 运行。可执行文件从另一个目录引用一些 DLL,比如 C:\MyDLLs。问题是,这些引用的 DLL 再次依赖于存储在另一个目录中的其他 DLL。我可以告诉 Visual Studio 在哪里寻找这些丢失的 DLL 吗?非常感谢!

4

2 回答 2

3

您可以通过在配置中设置这些值来引用应用程序集加载规则之外的程序集。这是此 Microsoft 知识库文章中的示例配置文件:

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="MyAssembly2"  culture="neutral" publicKeyToken="307041694a995978"/>
            <codeBase version="1.0.1524.23149" href="FILE://C:/Myassemblies/MyAssembly2.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

您使用该<codeBase>元素告诉您的应用程序在哪里查找。

您必须将程序集命名为强名称(使用sn.exe工具)才能使其正常工作。

了解运行时如何解析程序集引用也很有用,也许您可​​以利用它而不是通过所有的箍来使用<codeBase>.

于 2010-08-24T20:16:54.440 回答
1

我之前遇到过这个问题,我创建了一个构建后脚本,将所有需要的 DLL 复制到我的可执行文件目录中。

类似于:复制“$(ProjectDir)Resources\DLLs\yourDLL.dll”“$(TargetDir)yourDLL.dll”

于 2010-08-24T20:11:46.887 回答