【发布时间】:2016-09-12 15:50:45
【问题描述】:
我的问题可能看起来很具体,但实际上可能很笼统:如何发布使用 3rd 方引用的控制台应用程序?
我正在使用 Visual Studio 2015 制作一个名为 Gdx2PostgreSql 的控制台应用程序,该应用程序使用 Visual Basic 编程。该应用程序正在读取 Gdx 文件中的数据(来自 GAMS 程序的输出,www.gams.com)并将数据写入 PostgreSql 数据库。 PostgreSql 的接口由 NpgSql 处理,www.npgsql.org。 NpgSql 被引用为
\\dtu-storage\hela\Documents\Visual Studio 2015\Projects\GDX to PostgreSQL 2\packages\Npgsql.3.1.7\lib\net451\Npgsql.dll
当程序在 Visual Studio 中以 Debug 模式执行时,程序可以正常运行。
我必须能够从 CMD 窗口中的命令提示符运行程序。此外,我必须能够通过使用 GAMS 语法从 GAMS 程序生成来运行该程序
Execute 'Gdx2PostgreSql "FileName.gdx" "CaseName"';
我已发布程序并运行安装程序的安装文件。但是当我在 CMD 窗口中运行它时,我得到了错误:
'Gdx2PostgreSql' is not recognized as an internal or external command, operable program or batch file.
从我的 GAMS 程序生成时,我收到相同的错误消息。
由于相当绝望,我尝试将 Publish 文件夹中的 setup.exe 文件重命名为 Gdx2PostgreSql.exe。当我使用这个文件时,我得到:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Npgsql, Version=3.1.7.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7' or one of its dependencies. The system cannot find the file specified.
即程序不知道 NpgSql。
在我看来,我需要一个包含所有需要的 EXE 文件 - 特别是因为我的程序也应该能够在其他 PC 上运行。
谁能帮我制作我的程序 Gdx2PostgreSql 函数?
最后,我应该提一下,我已经让其他程序读取 Gdx 文件并使用 NggSql 写入 PostgreSql。这些程序可以正常运行,但它们是 Windows 窗体应用程序,而不是控制台应用程序。
【问题讨论】:
-
我要检查两件事,首先,当您在解决方案资源管理器中单击 Npgsql.dll 时,在属性窗口中尝试将本地复制设置为 true。此外,如果它确实在调试模式下运行,那么您应该能够导航到 YourConsoleApp/bin/debug 。您应该能够将这些文件复制并粘贴到其他任何地方并运行 .exe 就好了。
-
@D.Mac Npgsql.dll 有 Local=True。我已将 Gdx2PostgreSql.exe 和 Npgsql.dll 从 bin/Release 复制到安装 GAMS 的文件夹中。 (也就是说,我不是在“发布”程序。)然后它似乎在从 GAMS 程序调用时起作用。
标签: postgresql visual-studio-2015 console-application publish npgsql