如何在不检查依赖项的情况下构建C#项目?

Syl*_*ain 8 c# msbuild visual-studio

给出一个解决方案:

  • 项目P1引用了P2
  • P2引用了P3
  • P3参考了P4

当你以这种方式调用msbuild时:

msbuild.exe /v:m "c:\mysolution\p1\p1.csproj"
Run Code Online (Sandbox Code Playgroud)

如有必要,msbuild检查所有项目依赖项是否构建依赖项.典型的输出是:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

  P4 -> c:\mysolution\P4\bin\Debug\P4.dll
  p3 -> c:\mysolution\p3\bin\Debug\p3.dll
  p2 -> c:\mysolution\p2\bin\Debug\p2.dll
  p1 -> c:\mysolution\p1\bin\Debug\p1.dll
Run Code Online (Sandbox Code Playgroud)

就我而言,我知道依赖存在并且没有问题.

有没有办法只在p1.csproj不验证依赖项的情况下构建项目?解决方案可以使用msbuild或其他内容.

Win*_*ton 5

您可以传递/p:BuildProjectReferences=false给 msbuild,它将跳过构建项目引用..但这有一个限制,如果您的解决方案配置和引用项目的配置不匹配,msbuild 将无法解析引用项目的目标输出文件...

这里有一个免费的vs扩展包,你可以下载并尝试 http://visualstudiogallery.msdn.microsoft.com/98de4058-8dc7-435b-9e01-c0f71dace808

vs 包:Sharp Build Utility

我是这个扩展的作者,我在当前的工作中也有同样的需求,喜欢这个工具......

本质上,此扩展可以处理上述情况,这将创建构建项目文件的影子副本,将所有项目引用更改为 dll 文件引用,并使用影子项目文件启动 msbuild。