2011-10-12 46 views
2

我正在研究.NET库,并且我希望构建脚本如此通用以至于可以从MS .NET框架运行,并且从Mac/Linux机器上的单声道安装。以独立于平台的方式从msbuild项目运行.net可执行文件

这里的问题是运行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

您可以使用平台的条件下,这样的:

<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

从您链接过的页面:“xbuild将其设置为“**的Unix **“在非Windows平台上,即使在MacOS上。 – toong

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> 
相关问题