MSBuild成功,但Visual Studio失败

MSBuild成功,但Visual Studio失败

问题描述:

我们使用Jenkins构建使用msbuild的项目。MSBuild成功,但Visual Studio失败

我添加了一个项目引用到一个现有的项目,但忘了将这个新项目添加到所有的解决方案文件。

我承诺,但詹金斯告诉我,一切正常。 我想,在命令行:

msbuild test.sln /t:Rebuild /p:Configuration=Debug 

有工作正常,在詹金斯和我的开发机器上完全清除工作目录。输出告诉我,msbuild找到该项目并构建它。

但是,如果我打开Visual Studio 2017并尝试构建该解决方案,它会告诉我依赖项目找不到。

这是正确的。

如何强制msbuild仅构建解决方案文件中指定的项目,以便我们能够找到错过该新项目的所有解决方案?

顺便说一句:我们不需要提示如何找到所有需要包含该新项目的解决方案。寻找解决方案非常简单。

+0

你是什么意思“但忘了将这个新项目添加到所有的解决方案文件。”?你是不是说你没有提交这个新项目?你能否给我一些更详细的步骤来重现这个问题? –

+0

@ Leo-MSFT我们有多种解决方案,都包含一个共同的项目。该项目得到了一个新组件的参考。我只将这个项目添加到一个解决方案中,我创建了它,并忘记了所有其他解决方案文件。为了更好的理解:我们正在使用项目引用。 –

+0

感谢您的回复。您的项目结构是这样的:https://1drv.ms/i/s!Ai1sp_yvodHfc7qaSvEkVpyMOHc,现在,您想要构建指定的通用项目,然后能够找到错过了新项目的所有**解决方案? AFAIK,我们可以使用命令行:“msbuild CommonProjectName.csproj/t:Rebuild/p:Configuration = Debug”来构建一个解决方案文件中的指定内容,除了构建所有解决方案外,我们无法找到所有错过新项目的解决方案。 –

如何强制msbuild只生成解决方案文件中指定的项目,以便我们能够找到错过新项目的所有解决方案?

避免的MSBuild的重建在溶液文件中列出的所有依赖的默认行为,正确的方法是将BuildProjectReferences属性设置为false,那么构建命令行应该是:

MSBuild Test.sln /t:Rebuild /p:Configuration=Debug /p:BuildProjectReferences=false 

使用后此命令行中的MSBuild将获得与VS相同的错误,因此我们可以发现,错过了所有的解决方案,新的项目

enter image description here

注意:BuildProjectReferences将检查解决方案文件中列出的所有依赖项,因此请保持其值为true,除非用于检查缺少的依赖项。

希望这会有所帮助。

+0

这看起来完全像我寻找的解决方案。错误发生像预期的那样。但是,如果我有一个正确的解决方案,它不起作用。一个正确的解决方案不会建立。 –

+0

@Verarind,是的,BuildProjectReferences将检查解决方案文件中列出的所有依赖项,所以请保持其值为true,除非用于检查缺少的依赖项。 –