4

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

4

5 回答 5

7

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

复制本地设置

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

于 2012-09-17T18:04:47.733 回答
2

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

运行时使用的完整过程在 MSDN如何运行时定位程序集中进行了介绍。特别是,标题为“通过代码库定位程序集”或“探测”的主题涵盖了如何详细定位程序集,这取决于很多因素。

于 2012-09-17T18:04:03.677 回答
1

DLL 应该带有 exe 文件。查看此链接以查看 DLL 的 .NET 搜索位置 搜索位置以加载引用的 DLL 的顺序是什么?

于 2012-09-17T18:03:27.123 回答
1

dll 可以安装在 GAC 中,也可以与 EXE 位于同一目录中。

编辑:上面提到的只是解决引用的几个位置。

于 2012-09-17T18:03:55.610 回答
0

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

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

如果部署,请检查 csproj 中的程序集路径,并确保部署程序集

注意:检查CopyLocal您的参考属性

2 其他解决方案:

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

工具:Gacutil.exe为了设置组件

于 2012-09-17T18:04:20.810 回答