2010-09-16 2 views
0

Этот код приложения консоли вызывает MSTest и запускает единичный тест, но с «Access Denied» не работает с некоторыми сборками, требуемыми для модульного тестирования (см. Ошибки ниже кода). Любой способ плавного запуска MSTest для запуска в качестве администратора здесь?Как мне запустить MSTest как администратор при вызове из консольного приложения?

Я пробовал манифест, ничего не менял, поскольку манифест относится к вызывающему приложению, а не к mestest, правильно?

Также попытался указать ProcessStartInfo.Username и пароль, но Password хочет какую-то специальную SecureString, и это НЕ интерактивное консольное приложение, которое вызывается SVN на крюке pre-commit.

private static string MSTest() 
    { 
     if (File.Exists(@"C:\temp\TestProject1.trx")) 
     { 
      File.Delete(@"C:\temp\TestProject1.trx"); 
     } 

     Process process = new Process(); 
     ProcessStartInfo psi = new ProcessStartInfo(); 
     psi.FileName = @"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"; 
     psi.Arguments = String.Format 
      (
      "/testcontainer:{0} /resultsfile:{1} /nologo", 
      @"C:\Users\johndoe\Documents\SVN_TEST\Test\branches\johndoe\WebApplication1\TestProject1\bin\Debug\TestProject1.dll", 
      @"C:\temp\TestProject1.trx" 
      ); 
     psi.UseShellExecute = false; 
     psi.RedirectStandardOutput = true; 
     psi.RedirectStandardError = true; 
     process.StartInfo = psi; 
     process.Start(); 
     string output = process.StandardOutput.ReadToEnd(); 
     process.WaitForExit(); 
     return output; 
    } 

Ошибка: Фиксировать не удалась (подробности ниже):
Ошибки: Фиксировать заблокирована предварительно зафиксированный крюк (код выхода 1) с выходом:
Ошибка: Загрузка C: \ Users \ JohnDoe \ Documents \ SVN_TEST \ Test \ ветви \ JohnDoe \ WebApplication1 \ TestProject1 \ Bin \ Debug \ TestProject1.dll ...
Ошибка: Начало выполнения ...
Ошибка:
Ошибка: Результаты тестов верхнего уровня
Ошибка: ---- --- ---------------
Ошибка: ошибка stProject1.BankTest.DebitTest
Ошибка: 0/1 тест (ы) Зачет, 1 Ошибка
Ошибка:
Ошибка: Краткое
Ошибка: -------
Ошибка: Test Run Failed.
Ошибка: Ошибка 1
Ошибка: ---------
Ошибка: Всего 1
Ошибка: Результаты файла: C: \ Temp \ TestProject1.trx
Ошибка: Настройки тестирования: Настройки по умолчанию Test
Ошибка:
Ошибка: Run имеет следующий вопрос (ы):
Ошибка: Предупреждение: Тестовый прогон выпуск развертывания: Не удалось развернуть зависимости для теста
Ошибка: хранение
об ошибке: «C: \ Users \ JohnDoe \ документы \ svn_test \ Test \ ветви \ JohnDoe \ webapplication1 \ testproject1 \ Bin \ Debug \ тест Project1.dll ':
Ошибка: System.IO.FileLoadException: Не удалось загрузить файл или сборку
Ошибка:' Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver,
Ошибка: Version = 10.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a 'или один из
Ошибка: его зависимости. В доступе отказано.
Ошибка: Имя файла: 'Microsoft.VisualStudio.QualityTools.Tips.UnitTest.AssemblyResolver,
Ошибка: Version = 10.0.0.0, Culture = нейтрально, PublicKeyToken = b03f5f7f11d50a3a'
Ошибка: в System.Reflection.RuntimeAssembly._nLoad (AssemblyName имя_файла, строка
Ошибка: CodeBase, Доказательства assemblySecurity, RuntimeAssembly locationHint,
Ошибка: StackCrawlMark & stackMark, булева throwOnFileNotFound, булева
Ошибка: forIntrospection, Boolean suppressSecurityChecks)
Ошибка: в System.Reflection.RuntimeAssembly.nLoad (AssemblyName имя_файла, строка
Ошибка: CodeBase, Доказательства assemblySecurity, RuntimeAssembly locationHint,
Ошибка: StackCrawlMark & stackMark, булева throwOnFileNotFound, булева
Ошибка: forIntrospection, Boolean suppressSecurityChecks)
Ошибка: в System.Reflection.RuntimeAssembly. InternalLoadAssemblyName (AssemblyName
Ошибка: assemblyRef, фактические данные assemblySecurity, StackCrawlMark & stackMark, булева
Ошибка: forIntrospection, Boolean suppressSecurityChecks)
Ошибка: при System.Reflection.RuntimeAssembly.Intern alLoad (String assemblyString,
Ошибка: данные assemblySecurity, StackCrawlMark & stackMark, булева forIntrospection)
Ошибка: в System.Activator.CreateInstance (String AssemblyName, струнного TypeName,
Ошибка: Boolean IgnoreCase, BindingFlags bindingAttr, Связующее связующее, объект [] арг,
Ошибка: CultureInfo культуры, Object [] activationAttributes, фактические данные securityInfo,
Ошибка: StackCrawlMark & stackMark)
Ошибка: в System.Activator.CreateInstance (String AssemblyName, струнного TypeName,
Ошибка: Boolean IgnoreCase , Биндин Gflags bindingAttr, Связующее связующее, Object [] арг,
Ошибка: CultureInfo культуры, Object [] activationAttributes, фактические данные securityInfo)
Ошибка: в System.AppDomain.CreateInstance (String AssemblyName, струнного TypeName,
Ошибка: Boolean IgnoreCase, BindingFlags bindingAttr, связующее связующее, Object [] арг,
Ошибка: CultureInfo культуры, Object [] activationAttributes, Доказательства securityAttributes)
Ошибка: в System.AppDomain.CreateInstanceAndUnwrap (String, String AssemblyName
Ошибка: TypeName, булева IgnoreCase, BindingFlags bindingAttr, Binder binder, Object []
Ошибка: args, CultureInfo культура, Object [] activationAttributes, фактические данные securityAttributes)
Ошибка: в System.AppDomain.CreateInstanceAndUnwrap (String, String AssemblyName
Ошибка: TypeName, булева IgnoreCase, BindingFlags bindingAttr, Связующее Связующее, Object []
Ошибка: арг, CultureInfo культура, Object [] activationAttributes, фактические данные securityAttributes)
Ошибка: при
ошибка: Microsoft.VisualStudio.TestTools.Utility.AssemblyLoadStrategy.GetDependentAssemblies (String
Ошибка: путь)
Ошибка: в
Ошибка: Microsoft.VisualStudio .TestTools.Utility.As semblyHelper.GetDependentAssemblies (String
Ошибка: путь, DependentAssemblyOptions опции, строка CONFIGFILE)
Ошибка: при
ошибка: Microsoft.VisualStudio.TestTools.TestManagement.DeploymentManager.GetDependencies (String
Ошибка: мастер, String CONFIGFILE, TestRunConfiguration runConfig , DeploymentItemOrigin
Ошибка: dependencyOrigin, Список 1 dependencyDeploymentItems, Dictionary 2 missingDependentAssemblies)
Ошибка: при
Ошибка: Microsoft.VisualStudio.TestTools.TestManagement.DeploymentManager.ProcessNewStorage (String
Ошибка: testStorage, DeploymentHelper хелперы, DeploymentItemOriginType originType,
Ошибка: Список Ошибка: dependencyDeploymentItems, Dictionary`2 missingDependentAssemblies)

ответ

0

Вы можете пройти пароль безопасной строки, выполнив следующие действия:

if (!String.IsNullOrEmpty(Password)) 
{ 
    SecureString pwd = new SecureString(); 
    for (int i = 0; i < Password.Length; i++) 
    { 
     pwd.AppendChar(Password[i]); 
    } 
    process.StartInfo.Password = pwd; 
} 
0

Попробуйте добавить этот

Process process = new Process(); 
process.StartInfo.Verb = "runas"; 
Смежные вопросы