DLL引用位置

时间:2012-09-17 17:59:40

标签: c# dll

好的,前几天我问过this question,由于我的模糊性,它已经关闭了。我会尝试更具体。在一个项目中,比如C#(使用Visual Studio),我添加对dll的引用(右键单击References-> Add Reference),并且所述dll的位置在C:\ Blah \ Foo中。现在,如果我将构建的exe移动到另一台机器上,那么dll的位置是否需要与exe一起使用,还是需要在C:\ Blah \ Foo中?谢谢。

5 个答案:

答案 0 :(得分:6)

以您描述的方式添加引用时,它将被复制到输出文件夹(与exe文件相同)。查看引用的属性(F4),您将看到一个名为“Copy Local”的选项,如果将其设置为true,则DLL将被复制到与EXE文件相同的输出文件夹中。

Copy Local Setting

因此,当您将应用程序部署到另一台计算机时,您需要将exe及其引用的所有DLL复制到部署位置。 Windows将在多个位置搜索DLL,第一个位置与EXE文件相同。

答案 1 :(得分:2)

通常,您只需将程序集放在与应用程序相同的文件夹中,这会使其位于默认探测路径中,并且找到(对于大多数应用程序),但是根据类型还有许多其他选项申请。定义引用时,可以选择“复制本地” - 这会将程序集复制到应用程序的输出文件夹中。如果将此设置保留为True,则程序集(DLL)将使用.exe,并且通常“只是工作”。

How the Runtime Locates Assemblies中的MSDN涵盖了运行时使用的完整过程。特别是,标题为Locating the Assembly through Codebases or Probing的主题涵盖了程序集的详细位置,这取决于很多因素。

答案 2 :(得分:1)

DLL应该是exe文件。查看此链接以查看.NET搜索DLL In what order are locations searched to load referenced DLLs?

的位置

答案 3 :(得分:1)

dll既可以安装在GAC中,也可以与EXE一起出现在同一目录中。

编辑:上面提到的只是解决参考资料的几个地方。

答案 4 :(得分:0)

添加引用时,在此程序集上的csproj上添加路径,不要只是确保可以引用此dll。

部署时,这是另一个问题,因为您的dll已复制到Bin目录中。

如果部署,请检查csproj中的装配路径,并确保部署装配

Nota:查看CopyLocal您的参赛资产

2其他解决方案:

您可以使用GAC Global Assembly Cache分享您的程序集

工具:Gacutil.exe以设置程序集