Запуск исполняемого файла .net из проекта msbuild независимо от платформы. - PullRequest
2 голосов
/ 12 октября 2011

Я работаю над библиотекой .NET и хочу, чтобы скрипт сборки был настолько универсальным, чтобы он мог запускаться как из среды MS .NET, так и из моно-установки на компьютере Mac / Linux.

Проблема здесь в том, что работает NUnit. Я скачал исполняемый файл nunit и поместил его в папку lib. Чтобы выполнить его на моем Mac, я должен написать следующее в моем скрипте сборки

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  ...

  <Target Name="Test" AfterTargets="Compile">
    <Exec Command="mono lib/NUnit/nunit-console.exe $(OutputAssembly)" />
  </Target>
</Project>

Это «моно» часть, которая связывает скрипт сборки с моно фреймворком. Есть ли способ, которым я могу написать этот скрипт сборки, чтобы он работал как на платформе MS .NET, так и на Mono?

Теперь моя проблема здесь связана с NUnit. Но это может быть и любой другой исполняемый файл .NET.

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Вы можете использовать условия платформы, например:

<Exec Command="foo.exe arg1 arg2" Condition=" '$(OS)' == 'Windows_NT' " />

для условного выполнения.Эквивалентным моно условием будет либо «Unix», либо «OSX» вместо «Windows_NT».

Для получения дополнительной информации посмотрите здесь: http://www.mono -project.com / Porting_MSBuild_Projects_To_XBuild # Platform_specific_items

0 голосов
/ 02 декабря 2011

Как насчет следующего (проверенного) предложения:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ManagedExeLauncher Condition="('$(OS)' != 'Windows_NT')">mono </ManagedExeLauncher>
     ...
  </PropertyGroup>      

  ...

  <Target Name="Test" AfterTargets="Compile">
    <Exec Command="$(ManagedExeLauncher)lib/NUnit/nunit-console.exe $(OutputAssembly)" />
  </Target>
</Project>
...