私の問題は具体的に思えるかもしれませんが、実際は非常に一般的です:第三者参照を使用するコンソールアプリケーションを公開するには?サードパーティのリファレンスを使用するコンソールアプリケーションを公開するには?
Visual Studioで2015を使用して、Visual BasicでプログラムされたGdx2PostgreSqlというコンソールアプリケーションを作成しています。アプリケーションは、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構文
Execute 'Gdx2PostgreSql "FileName.gdx" "CaseName"';
を使用してGAMSプログラムから産卵してプログラムを実行できるようにする必要があります。私はCMDウィンドウでそれを実行した場合しかし、私はエラーを取得する:
'Gdx2PostgreSql' is not recognized as an internal or external command, operable program or batch file.
私のGAMSプログラムから産卵時に、私は同じエラーメッセージが表示されます。
私は、Gdx2PostgreSql.exeのPublish-folderにあるsetup.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はプログラムには認識されません。
私が見ているように、私のプログラムは他のPCでも実行できるはずですから、必要なものすべてを保持する1つのEXEファイルが必要です。
誰でも私のプログラムGdx2PostgreSql機能を助けることができますか?
最後に、私はGdxファイルを読み込み、NggSqlを使ってPostgreSQLに書き込む他のプログラムを作ったことに言及する必要があります。これらのプログラムは正しく機能しますが、コンソールアプリケーションではなくWindowsフォームアプリケーションです。
まず、ソリューションエクスプローラでNpgsql.dllをクリックすると、プロパティウィンドウでcopy localをtrueに設定してみてください。また、デバッグモードで実行されている場合、文字通りYourConsoleApp/bin/debugにナビゲートすることができます。これらのファイルを他の場所にコピーして貼り付け、.exeを正常に実行できるはずです。 –
@ D.Mac Npgsql.dllにはLocal = Trueがありました。 bin/ReleaseからGAMSがインストールされているフォルダにGdx2PostgreSql.exeとNpgsql.dllをコピーしました。 (すなわち、私はプログラムを公開していません)。そして、GAMSプログラムから呼び出されたときに機能するようです。 – Helge