在包含外部库的文件夹外运行C#可执行文件

在包含外部库的文件夹外运行C#可执行文件,c#,visual-studio-2010,dll,executable,dllnotfoundexception,C#,Visual Studio 2010,Dll,Executable,Dllnotfoundexception,我有一个C#程序,它使用我从互联网下载的外部开源库,特别是openxml来创建excel文件。现在,我想在没有安装此库的计算机上运行可执行文件 我已经知道,通过将copy local属性设置为true,我可以让visual Studio在debug或release文件夹中制作库的副本,我正在这样做 问题是,现在可执行文件可以在其他计算机上运行并生成excel文件,但必须在保存库的debug或release文件夹中运行可执行文件 当我试图复制可执行文件并在文件夹外运行它时,会引发一个异常,告诉我找

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

我已经知道,通过将copy local属性设置为true,我可以让visual Studio在debug或release文件夹中制作库的副本,我正在这样做

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

当我试图复制可执行文件并在文件夹外运行它时,会引发一个异常,告诉我找不到库,在文件夹外运行可执行文件时,如何使它找到库

谢谢


-杰克

你可以通过两种方式来做到这一点:

  • 可以将所有DLL(如果DLL是C#DLL)合并到一个可执行文件中,以便库始终与您在一起
  • 您可以将DLL资源添加到项目中,然后在启动时将它们输出到本地目录
  • 为参考库设置目录
  • 另见:

    创建Windows Istaller

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

    应该有几个选项可以使用

    问题是库不在路径中

    这可能会有帮助。"". 您只需要始终将库放在同一位置

    您可以将它添加到path变量中(尽管这可能会在其他地方引起冲突)。 您可以随时将文件夹添加到临时路径,即控制台。 您可以将其添加到相对路径“”


    希望这有助于

    看看这个,我认为它会对工作有所帮助。为什么不能将dll与exe一起复制?