MSBuild可以忽略项目引用吗? (BuildProjectReferences不起作用)

时间:2011-08-19 00:09:52

标签: msbuild build-automation

我正在尝试为.NET解决方案制作一个构建脚本,该解决方案由几个c#项目和一个自定义项目组成。自定义项目可以由devenv构建,但msbuild会在其上构建。

我希望MSBuild忽略自定义项目,因为我已经使用Exec任务构建它。我实际上需要MSBuild甚至不打开自定义.proj文件,因为它是JSON格式,因此导致MSBuild崩溃。

/ BuildProjectReferences = false开关不起作用。 MSBuild仍尝试读取自定义项目文件。有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:2)

这个问题源于一个项目,它有一个SilverFrost Fortran项目和几个c#类库。解决方案只能使用devenv进行编译。 Msbuild会在Fortran项目上抛出错误,因为它不使用标准的.csproj格式。

即使使用/ BuildProjectReferences = false,msbuild也会尝试读取Fortran项目并抛出错误。我发现的解决方法是将msbuild任务包装在一个执行以下操作的nant任务中:

  1. 调用Fortran命令行编译器
  2. 使用xmlpoke任务
  3. 从其他.csproj项目中删除对Fortran项目的所有引用
  4. 使用对Fortran编译器输出的直接dll引用替换所述引用
  5. 在修改后的解决方案上调用Msbuild

答案 1 :(得分:0)

不要通过MSBuild构建一次解决方案,而是尝试逐个构建每个项目。在这种情况下,您可以忽略所需的项目。您还可以在此新脚本中定义自己的“基于Exec”的构建。

答案 2 :(得分:0)

在使用自定义项目的项目中,您是否可以右键单击Project Dependencies并从列表中删除自定义项目?您可以改为引用自定义项目的二进制输出。