Sto cercando di chiamare MSTest da un'app di console all'interno di un gancio pre-commit SVN, ma ricevere un errore?
-
03-10-2019 - |
Domanda
Sto cercando di chiamare MSTEST.exe da una semplice app di console che viene eseguita dall'interno di un gancio pre-commit SVN.
Se utilizzo TortoisVN per impegnarmi, gestisce automaticamente il codice dell'app console di seguito.
(Salta dopo il codice per vedere cosa succede ...)
// CODICE
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;
}
// PRODUZIONE
Questo è quello che vedo nella finestra Tortoisvn:
Errore: commit non riuscito (seguire i dettagli):
Errore: commit bloccato da un hook pre-commit (Codice di uscita 1) con output:
Errore: Microsoft (R) Strumento riga di comando di esecuzione test versione 10.0.30319.1
Errore: Copyright (C) Microsoft Corporation. Tutti i diritti riservati.
Errore:
Errore: file
Errore: "C: Users MyName Documents Svn Test bin debug testproject1.dll"
Errore non trovato .
Quindi puoi vedere che sto chiamando MSTEST correttamente, ma sostiene che il percorso è sbagliato.
Ma, se apro manualmente un prompt dei comandi VS e digio lo stesso percorso esatto, il codice viene eseguito senza errore.
Che cosa sto facendo di sbagliato?
Soluzione
È possibile, questo potrebbe effettivamente essere un problema di autorizzazioni, non un problema FNF.
Esegui Filemon mentre si esegue il codice e vedi cosa viene effettivamente richiesto a livello di sistema operativo.