2

我正在开发一个 .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 可执行文件。

4

2 回答 2

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

于 2011-10-12T17:39:57.240 回答
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>
于 2011-12-02T15:43:06.733 回答