好的,前几天我问过this question,由于我的模糊性,它已经关闭了。我会尝试更具体。在一个项目中,比如C#(使用Visual Studio),我添加对dll的引用(右键单击References-> Add Reference),并且所述dll的位置在C:\ Blah \ Foo中。现在,如果我将构建的exe移动到另一台机器上,那么dll的位置是否需要与exe一起使用,还是需要在C:\ Blah \ Foo中?谢谢。
答案 0 :(得分:6)
以您描述的方式添加引用时,它将被复制到输出文件夹(与exe文件相同)。查看引用的属性(F4),您将看到一个名为“Copy Local”的选项,如果将其设置为true,则DLL将被复制到与EXE文件相同的输出文件夹中。
因此,当您将应用程序部署到另一台计算机时,您需要将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
以设置程序集