أحاول الاتصال بـ MSTEST من تطبيق وحدة تحكم داخل خطاف SVN قبل الالتزام ، ولكن الحصول على خطأ؟
-
03-10-2019 - |
سؤال
أحاول الاتصال بـ mStest.exe من تطبيق وحدة تحكم بسيط يتم تنفيذه من داخل خطاف SVN قبل الالتزام.
إذا استخدمت TortoisesVN للالتزام ، فإنه يدير تلقائيًا رمز تطبيق وحدة التحكم أدناه.
(تخطي بعد الكود لمعرفة ما يحدث ...)
// الشفرة
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) Test Execution Command Line Tool الإصدار 10.0.30319.1
خطأ: حقوق الطبع والنشر (C) Microsoft Corporation. كل الحقوق محفوظة.
خطأ:
خطأ: ملف
خطأ: "C: Users myName Documents Svn Test bin debug testProject1.dll"
خطأ: لم يتم العثور عليه.
لذلك يمكنك أن ترى أنني أتصل بـ MSTEST بشكل صحيح ، لكنها تدعي أن المسار خاطئ.
ولكن ، إذا قمت بفتح موجه VS Order يدويًا واكتب نفس المسار بالضبط ، يتم تشغيل الكود دون خطأ.
ما الخطأ الذي افعله؟
المحلول
من الممكن ، أن هذه في الواقع مشكلة أذونات ، وليس مشكلة FNF.
قم بتشغيل Filemon أثناء تنفيذ الرمز ، ومعرفة ما يتم طلبه بالفعل على مستوى نظام التشغيل.