【发布时间】:2017-09-25 12:15:06
【问题描述】:
我们正在使用 Jenkins 使用 msbuild 构建项目。
我添加了对现有项目的项目引用,但忘记将这些新项目添加到所有解决方案文件中。
我承诺了,但 Jenkins 告诉我一切正常。 我在命令行上试过了:
msbuild test.sln /t:Rebuild /p:Configuration=Debug
在 Jenkins 和我的开发机器上拥有一个工作正常的完全清除的工作目录。输出告诉我 msbuild 找到了该项目并构建它。
但如果我打开 Visual Studio 2017 并尝试构建该解决方案,它会告诉我找不到依赖项目。
没错。
如何强制 msbuild 仅构建解决方案文件中指定的项目,以便我们能够找到错过该新项目的所有解决方案?
顺便说一句:我们不需要提示如何找到需要包含该新项目的所有解决方案。找到解决方案非常容易。
【问题讨论】:
-
“但忘记将这些新项目添加到所有解决方案文件中”是什么意思?你的意思是你没有提交这个新项目吗?您能否给我一些更详细的步骤来重现此问题?
-
@Leo-MSFT 我们有多个解决方案,它们都包含一个共同的项目。该项目引用了一个新程序集。我只将此项目添加到一个解决方案中,即我创建它的那个解决方案,而忘记了所有其他解决方案文件。为了更好地理解:我们正在使用项目引用。
-
感谢您的回复。您的项目结构是这样的吗:1drv.ms/i/s!Ai1sp_yvodHfc7qaSvEkVpyMOHc,现在,您想构建指定的公共项目,然后能够找到错过该新项目的所有解决方案? AFAIK,我们可以使用命令行:“msbuild CommonProjectName.csproj /t:Rebuild /p:Configuration=Debug”来构建一个解决方案文件中的指定,除了构建所有解决方案之外,我们找不到错过该新项目的所有解决方案。
-
@Leo-MSFT 是的,我们的解决方案结构看起来像您的示例。大多。项目本身包含引用,但解决方案文件不包含。构建所有解决方案并不奏效,因为这就是我们目前正在做的事情。即使未在解决方案文件中指定,MSBuild 也能够找到丢失的项目。我们正在寻找一种强制 MSBuild 仅构建解决方案文件中指定的项目的解决方案。
标签: c# visual-studio msbuild