2010-09-16 27 views
0

我想從一個簡單的控制檯應用程序中調用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命令手動提示符,然後鍵入完全相同的路徑,代碼運行沒有錯誤。

我在做什麼錯?

回答

0

有可能,這可能實際上是一個權限問題,而不是FnF問題。

運行Filemon的,而你正在執行的代碼,看到實際上是被要求在什麼操作系統級別。

+0

我跑的ProcessMonitor(Filemon的已不存在),限制其適用於文件系統活動,並過濾進程名「ControllerConsole.exe」(我的控制檯應用程序,試圖調用MSTEST的名字),我仍然有786行,不知道我在找什麼。 – Blackcoil 2010-09-16 19:14:08

+0

原來是一個權限問題。修復了它,現在又進入了另一個權限問題。 *呻吟* – Blackcoil 2010-09-16 22:11:55

相關問題