如何发布使用第三方引用的控制台应用程序?

时间:2016-09-12 15:50:45

标签: postgresql visual-studio-2015 console-application publish npgsql

我的问题可能看起来很具体,但事实上它可能非常笼统:如何发布使用第三方引用的控制台应用程序?

我正在使用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内的调试模式下执行程序时,程序正常运行。

我必须能够在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-folder中的文件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窗体应用程序 - 而不是控制台应用程序。

1 个答案:

答案 0 :(得分:0)

控制台应用程序与winforms应用程序没有任何区别 - 您必须在同一目录中分发EXE及其依赖的任何DLL。正如评论中所提到的,在构建程序之后,您应该能够在bin / Debug(或Release)下找到所需的一切。

关于为什么Gdx2PostgreSql未被发现,这可能是路径问题 - 尝试使用绝对路径运行程序,或者cd进入bin / Debug(或者在执行之前释放。