我正在使用C#4.0。我如何強烈引用.exe文件?
我正在使用Microsoft.VisualStudio.TestTools.UnitTesting
運行單元測試。
我的UnitTest項目測試另一個項目,比如ProjectA。項目A創建了這樣一個過程:
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();
我放在「MPLex.exe」內的各種彬的,包括「AppDomain.CurrentDomain.BaseDirectory」(這是的\ bin \調試\文件夾我的單元測試項目)。
MPLex.exe基本上是Microsoft的GPLEX衍生產品,它是Flex/Lex的C#版本。當我在ProjectA中添加對MPLex.exe的引用並在Object瀏覽器中查看它時,我沒有看到任何看起來像Main
的方法,或者與之連接的公共方法,否則我會這樣做而不是通過cmd調用它正如我上面所做的那樣。
我認爲發生了什麼是它正在進行單元測試,它不是搜索\ bin \ Debug \目錄。當我在非單元測試ProjectB中的Main方法中運行ProjectA中的相同代碼時,它工作正常。如果我能以某種方式強烈引用.exe,以便在需要時將它複製到任何地方,那麼我認爲我的問題將得到解決。我怎樣才能做到這一點?
編輯:
添加這個固定的,但就我所知,我可能剛分手別的尚未作出自己知道,但。
System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
你可以只添加一個引用mplex在測試項目中?此外,mstest不會運行bin外的測試,它會在運行之前複製到部署目錄。 – 2012-07-22 06:00:55
我沒有在我的測試項目中添加對MPLex.exe的引用。然而,一旦我做到了,它仍然無法工作。我懷疑引用的DLL和EXE的不復制,除非編譯器/鏈接器/無論什麼決定,他們實際上*使用*。至少不要在本單元測試使用的\ out \ bin目錄下。 – 2012-07-22 06:38:33