我正在研究.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可执行文件。
答案 0 :(得分:2)
您可以使用平台条件,如下所示:
<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
答案 1 :(得分:0)
以下(已测试)提案如何:
<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>