0

제 문제점은 구체적으로 보일 수 있지만 실제로는 매우 일반적입니다 : 타사 참조를 사용하는 콘솔 응용 프로그램을 게시하는 방법은 무엇입니까?타사 참조를 사용하는 콘솔 응용 프로그램을 게시하는 방법은 무엇입니까?

저는 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 창에서 실행할 때 나는 오류를 얻을 : 내 GAMS 프로그램에서 산란 할 때

'Gdx2PostgreSql' is not recognized as an internal or external command, operable program or batch file. 

내가 같은 오류 메시지가 표시됩니다.

필자는 필사적으로 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은 프로그램에 알려져 있지 않습니다.

필자가 보게되는 것처럼, 필자는 필요한 모든 것을 담고있는 하나의 EXE 파일을 가져야한다. 특히 내 프로그램이 다른 PC에서 실행될 수 있어야하기 때문이다.

아무도 내 프로그램 Gdx2PostgreSql 기능을 만들 수 있습니까?

마지막으로 Gdx 파일을 읽고 NgSQL을 사용하여 PostgreSQL에 쓰는 다른 프로그램을 만들었 음을 언급해야합니다. 이러한 프로그램은 올바르게 작동하지만 콘솔 응용 프로그램이 아닌 Windows Forms 응용 프로그램입니다.

+1

먼저 솔루션 탐색기에서 Npgsql.dll을 클릭 할 때 속성 창에서 로컬로 복사본 설정을 시도해보십시오. 또한 디버그 모드에서 실행되는 경우 문자 그대로 YourConsoleApp/bin/debug로 이동할 수 있어야합니다. 그 파일을 다른 곳에 복사하여 붙여 넣을 수 있고 .exe를 정상적으로 실행할 수 있어야합니다. –

+0

@ D.Mac Npgsql.dll의 로컬 = True입니다. bin/Release에서 GAMS가 설치된 폴더로 Gdx2PostgreSql.exe 및 Npgsql.dll을 복사했습니다. (즉, 나는 프로그램을 '퍼블리싱'하지 않는다.) 그러면 GAMS 프로그램에서 호출 될 때 작동하는 것 같다. – Helge

답변

0

콘솔 응용 프로그램은 실제로 winforms 응용 프로그램과 다르지 않습니다. EXE를 의존하는 DLL과 함께 동일한 디렉터리에 배포해야합니다. 주석에서 언급했듯이, 프로그램을 빌드 한 후에는 bin/Debug (또는 Release) 아래에서 필요한 모든 것을 찾을 수 있어야합니다.

Gdx2PostgreSql이 발견되지 않는 이유는 경로의 문제 일 가능성이 있습니다. 절대 경로로 프로그램을 실행하거나 실행하기 전에 bin/Debug (또는 Release)로 cd'ing하십시오.

+0

bin/Release의 Gdx2PostgreSql.exe 및 Npgsql.dll을 GAMS가 설치된 폴더로 복사했습니다.(즉, 나는 프로그램을 '퍼블리싱'하지 않는다.) 그러면 GAMS 프로그램에서 호출 될 때 작동하는 것 같다. – Helge

관련 문제