以独立于平台的方式从msbuild项目运行.net可执行文件
我正在开发一个.NET库,我希望构建脚本非常通用,可以从MS.NET framework和Mac/Linux机器上的mono安装运行 这里的问题是运行NUnit。我已经下载了nunit可执行文件并将其放在lib文件夹中。为了在我的Mac上执行它,我必须在构建脚本中编写以下内容以独立于平台的方式从msbuild项目运行.net可执行文件,msbuild,mono,nunit,xbuild,Msbuild,Mono,Nunit,Xbuild,我正在开发一个.NET库,我希望构建脚本非常通用,可以从MS.NET framework和Mac/Linux机器上的mono安装运行 这里的问题是运行NUnit。我已经下载了nunit可执行文件并将其放在lib文件夹中。为了在我的Mac上执行它,我必须在构建脚本中编写以下内容 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> ... <Target Name="Test" Aft
<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>
...
关键是“mono”部分,它将构建脚本与mono框架联系起来。有没有一种方法可以让我编写这个构建脚本,让它同时在MS.NET框架和Mono框架上运行
现在我的问题与努尼特有关。但它也可以是任何其他.NET可执行文件。您可以使用平台条件,如下所示:
<Exec Command="foo.exe arg1 arg2" Condition=" '$(OS)' == 'Windows_NT' " />
有条件地执行。等效的mono条件是“Unix”或“OSX”,而不是“windowsnt”
有关更多信息,请查看此处:
以下(经测试的)提案如何:
<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>
单声道
...
...
在您正在链接的页面中:“xbuild在非Windows平台上,甚至在MacOS上,都会将其设置为“Unix”