我想從一個簡單的控制檯應用程序中調用MSTest.exe,該應用程序是從SVN預先提交鉤子內部執行的。我試圖從SVN預提交鉤子中的控制檯應用程序調用MSTest,但出現錯誤?
如果我使用TortoiseSVN提交,它自動運行下面的控制檯應用程序代碼。
(代碼後跳到看看會發生什麼......)
// CODE
static void Main(string[] args)
{
string testPath = @"C:\Users\myname\Documents\SVN\Test\bin\Debug\TestProject1.dll";
string mstest = GetMSTestOutput(testPath);
if (mstest != null)
{
Console.Error.WriteLine(mstest);
Environment.Exit(1); // I WANT it to stop here, so I can see output while testing
}
}
private static string GetMSTestOutput(string testPath)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo
{
FileName = @"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe",
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
Arguments = String.Format("/testcontainer:{0}", testPath)
};
Process process = Process.Start(processStartInfo);
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return output;
}
//輸出
這是我在TortoiseSVN的窗口中看到:
錯誤:提交失敗(細節如下):
錯誤:提交已被預提交與輸出鉤(退出代碼1):
錯誤:Microsoft(R)測試執行命令行工具版本10.0.30319.1
錯誤:版權所有(c)Microsoft Corporation。版權所有。
錯誤:
錯誤:文件
錯誤: 「C:\用戶\ MYNAME \文檔\ SVN \測試\ BIN \調試\ TestProject1.dll」
錯誤:未找到。
所以你可以看到我在打電話正確MSTest的,但它聲稱的路徑是錯誤的。
但是,如果我打開VS命令手動提示符,然後鍵入完全相同的路徑,代碼運行沒有錯誤。
我在做什麼錯?
我跑的ProcessMonitor(Filemon的已不存在),限制其適用於文件系統活動,並過濾進程名「ControllerConsole.exe」(我的控制檯應用程序,試圖調用MSTEST的名字),我仍然有786行,不知道我在找什麼。 – Blackcoil 2010-09-16 19:14:08
原來是一個權限問題。修復了它,現在又進入了另一個權限問題。 *呻吟* – Blackcoil 2010-09-16 22:11:55