MSBuild能否忽略项目引用?(BuildProjectReferences不起作用)

MSBuild能否忽略项目引用?(BuildProjectReferences不起作用),msbuild,build-automation,Msbuild,Build Automation,我正在尝试为一个.NET解决方案创建一个构建脚本,该解决方案由几个c#项目和一个自定义项目组成。自定义项目可以由devenv生成,但msbuild无法生成 我希望MSBuild忽略自定义项目,因为我已经在使用Exec任务构建它。实际上,我需要MSBuild甚至不要打开自定义.proj文件,因为它是JSON格式的,因此会导致MSBuild崩溃 /BuildProjectReferences=false开关不工作。MSBuild仍尝试读取自定义项目文件。有什么办法可以解决这个问题吗?不要用MSBui

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

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


/BuildProjectReferences=false开关不工作。MSBuild仍尝试读取自定义项目文件。有什么办法可以解决这个问题吗?

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

在使用自定义项目的项目中,能否右键单击项目依赖项并从列表中删除自定义项目?您可以参考自定义项目的二进制输出。

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

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

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

  • 这些项目是相互依赖的,因此当MSBuild看到自定义项目在另一个项目中作为依赖项列出时,它会尝试打开该自定义项目。即使我已经使用
    Exec
    任务构建了依赖项目,MSBuild仍然会尝试打开它,以便它可以断言是否需要重建它。我想避免这种情况。