0

我有一个 C# 程序,它使用我从 Internet 下载的外部开源库,特别是 openxml 来创建 excel 文件。现在我想在没有安装这个库的计算机上运行我的可执行文件。

我已经知道我可以让视觉工作室通过将复制本地属性设置为 true 来在调试或发布文件夹中制作库的副本,我正在这样做。

问题是现在可执行文件可以在其他计算机上运行并生成excel文件,但可执行文件必须在保存库的调试或发布文件夹中运行。

当我尝试复制可执行文件并在文件夹外运行它时,会抛出一个异常,告诉我找不到库,如何在文件夹外运行可执行文件时让它找到库?

谢谢,

-杰克

4

3 回答 3

0

您可以通过以下几种方式做到这一点:

  1. ILMerge可以将所有 dll 合并在一起(如果 DLL 是 C# dll)到一个可执行文件中,因此这些库始终与您同在
  2. 您可以将 DLL 作为资源添加到项目中,然后在启动时将它们吐出到本地目录
  3. 为参考库设置目录使用存储在与主程序不同的文件夹中的参考库 (dll)?

另请参阅: 如何将 C++ windows dll 合并到 C# 应用程序 exe 中? 将非托管 dll 嵌入到托管 C# dll 将 DLL 嵌入到已编译的可执行文件中 将 C++ 库嵌入到 .Net 库中

于 2013-07-26T16:53:16.843 回答
0

创建 Windows 安装程序

如果您想在其他机器上运行您的软件,那么为什么不创建一个 MSI 呢?使用 MSI 打包您的外部可执行文件。当您安装它时,您的 exe 和外部 exe 都将被提取到同一位置,因此您不会遇到任何问题。

于 2013-07-26T16:54:28.047 回答
0

应该有几个应该起作用的选项。

问题是库不在路径中。

这可能会有所帮助。“ http://msdn.microsoft.com/en-us/library/vstudio/6taasyc6%28v=vs.100%29.aspx ”。您只需要始终将库放在同一位置。

您可以将它添加到路径变量中(尽管这可能会导致其他地方发生冲突)。您可以将文件夹添加到临时路径,即控制台启动时。您可以将其添加到相对路径“ Visual Studio:如何设置 dll 的路径?

希望这会有所帮助

于 2013-07-26T16:54:28.987 回答