C# 4.0을 사용하고 있습니다..exe 파일을 강력하게 참조하려면 어떻게해야합니까?
Microsoft.VisualStudio.TestTools.UnitTesting
을 사용하여 단위 테스트를 실행 중입니다.
UnitTest 프로젝트에서 다른 프로젝트 인 ProjectA를 테스트합니다. 나는 다양한 빈의 내부에 "MPLex.exe"을 배치 한
Process mplex = new Process();
psi = new ProcessStartInfo();
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.RedirectStandardError = true;
psi.FileName = "cmd.exe";
psi.Arguments = "/C mplex omittedForBrevity";
mplex.StartInfo = psi;
mplex.Start();
/* This is telling me: "'mplex' is not recognized
* as an internal or external command, operable
* program or batch file." */
var a = mplex.StandardError.ReadToEnd();
, 내 유닛 테스트 프로젝트의 \ 빈 \ 디버그 \ 폴더에있는 "해당 AppDomain.CurrentDomain.BaseDirectory"(포함 : PROJECTA이 같은 프로세스를 생성).
MPLex.exe는 기본적으로 Microsoft의 GPLEX 파생물이며 Flex/Lex의 C# 버전입니다. ProjectA에서 MPLex.exe에 대한 참조를 추가하고 객체 브라우저에서 볼 때 Main
과 같은 인터페이스가 표시되지 않거나 인터페이스 방식이 공개되지 않습니다. 그렇지 않으면 cmd 대신 호출 할 것입니다. 나는 위에서 한 것처럼.
제가 생각하기에 단위 테스트를 할 때 \ bin \ Debug \ 디렉토리를 검색하지 않습니다. ProjectA에서 같은 코드를 ProjectB가 아닌 Unit-test의 Main 메서드에서 실행할 때 제대로 작동합니다. 어떻게 든 강력하게 .exe를 참조하면 어디서나 복사 할 수 있기 때문에 문제가 해결 될 것이라고 생각합니다. 어떻게해야합니까?
편집 :이 추가
그것을 해결하지만, 모든 난 그냥이 아직 자체가 알려하지 않은 다른 뭔가를 부러 수 있습니다 알고 있습니다.
System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
그냥 mplex에 대한 참조를 추가 할 수 있습니다 테스트 프로젝트에서? 또한 mstest는 bin에서 테스트를 실행하지 않고 실행하기 전에 배포 디렉토리로 복사합니다. –
테스트 프로젝트에서 MPLex.exe에 대한 참조를 추가하지 않았습니다. 그러나 일단 내가 한 후에도 여전히 효과가 없었습니다. 나는 컴파일러/링커/그들이 무엇을 사용하는지 실제로 결정할 때까지 참조 dll과 exe가 복사되지 않는다고 생각한다. 최소한이 유닛 테스트가 사용하는 \ out \ bin 디렉토리가 아닙니다. –