C#使用库创建".exe"文件

3

我在我的项目中使用了一些dll文件。为了生成一个“.exe”文件,我只在解决方案配置中使用了“Released”。在我的电脑上,exe文件可以运行,但在另一台电脑上却出现了错误:“无法加载文件X...”。这里的X是一个dll文件。我将所有的dll文件都复制到了项目-bin-realese中,请问我该如何解决这个问题?

3个回答

2

将DLL文件复制到与EXE相同的文件夹中。如果你把它们放在子目录中,那么你就需要在app.exe.config文件中使用<probing>元素,以便CLR能够找到它们。


2
我将它保存在相同的目录下,但是我想要在其他电脑上使用我的应用程序,所以我只想使用exe文件。我该怎么做? - user449921
你可以使用第三方工具,如SmartAssembly或DeepSea将dll嵌入可执行文件中,也可以使用IL merge合并程序集。另外,你还可以创建安装工具并进行部署,或者使用ClickOnce部署。 - Guy
2
这与原问题有任何关联吗?谷歌搜索“ilmerge”。 - Hans Passant
1
在DLL中进行静态链接,真是太好笑了。正是“动态”的部分使它与库不同!=D - Ed S.
在.NET上,所有的库都是DLL。如果你想要非动态行为,你必须使用ILMerge将它们与你的EXE合并。 - Tim Robinson

1
如果您不需要DLL的依赖项,那么在项目中“引用”下右键单击它并删除。如果您确实需要该依赖项,则需要将其与EXE一起传输到其他计算机上。

0
以上答案是通用的加载依赖库的方法。然而,它也可能取决于加载库的exe方式。例如,MEF有一个DI引擎,可以从特定文件夹加载目录库。如果所需的库不存在,您可能会遇到类似的异常。检查您的.exe要求以获取其特定依赖项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接