Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我在VisualStudio中进行项目引用时,我是否必须在部署时包含这些项目的DLL?_C#_.net_Deployment_Dll - Fatal编程技术网

C# 当我在VisualStudio中进行项目引用时,我是否必须在部署时包含这些项目的DLL?

C# 当我在VisualStudio中进行项目引用时,我是否必须在部署时包含这些项目的DLL?,c#,.net,deployment,dll,C#,.net,Deployment,Dll,我有一个控制台应用程序和两个类库项目 控制台应用程序必须将引用投影到类库项目 当我构建时,它会为这两个项目生成DLL。我是否必须将这些包含在控制台应用程序exe文件中?有没有办法让我不必包括这两个DLL 理想情况下,我希望有一个exe。您必须包含任何引用的程序集,因为它们是应用程序的依赖项 尽管如此,Microsoft提供了一个名为的工具,允许您将依赖项程序集与可执行文件结合起来,创建一个包含所有内容的可执行程序集,并将其发送给客户。签出。您应该能够通过选择引用并设置“本地副本”来完成此操作属性

我有一个控制台应用程序和两个类库项目

控制台应用程序必须将引用投影到类库项目

当我构建时,它会为这两个项目生成DLL。我是否必须将这些包含在控制台应用程序exe文件中?有没有办法让我不必包括这两个DLL


理想情况下,我希望有一个exe。

您必须包含任何引用的程序集,因为它们是应用程序的依赖项


尽管如此,Microsoft提供了一个名为的工具,允许您将依赖项程序集与可执行文件结合起来,创建一个包含所有内容的可执行程序集,并将其发送给客户。

签出。

您应该能够通过选择引用并设置“本地副本”来完成此操作属性设置为false。

您可以使用将程序集合并为一个程序集,否则必须部署exe文件和DLL。 e、 g.您可以运行如下命令

ilmerge /target:winexe /out:MyProg.exe Program.exe ClassLib1.dll ClassLib.dll

Visual Studio没有提供内置的方法来执行此操作,因此您必须以生成后事件的形式手动运行上述命令,或者手动将其添加到.csproj文件中。

请小心使用ILMerge,并确保您理解执行此操作的性能影响。

这将把.dll复制到(例如)调试/输出文件夹中,在分发应用程序时,您仍然必须发送DLL和exe。这是我为二进制WinForms应用程序所做的。@nos:我的行为不是这样的。也许我只是一个天生的怪胎,但我有一个WinForms可执行文件,在本地项目中有8个引用,都将Copy local设置为“false”。我只部署了.exe,它就像一个符咒一样工作。这是因为它将这些信息嵌入到项目中。如果您定义应用程序的连接字符串,而不是使用app.config/web.config文件,则可能会发生这种情况。@JonH:试试看。如果您有配置信息,您仍然需要提供一个单独的配置(但这可以通过使用编译的.resx文件来解决)。我只是验证了一下,因为你们让我觉得我疯了。我刚刚将一个带有配置的exe发送到了一个从未见过这个应用程序的服务器上(我想我的成功可能被GAC中的文件掩盖了,但事实并非如此),它工作得非常出色。