在CI服务器上使用MSBuild构建时排除解决方案中的项目

14
我正在Visual Studio中开发一个解决方案,其中包含多个项目:
Solution.sln:
-> ProjectInc1.csproj
-> ProjectInc2.csproj
-> ProjectExc1.csproj
-> ProjectExc1.csproj
我在所有项目上工作,当我向VCS(如我的Github)推送时,它会触发CI服务器(如我的TeamCity)上的构建配置。 TeamCity服务器使用MSBuild,它以Solution.sln为参数进行构建。但是,我希望某些项目(例如ProjectExc1.csproj,ProjectExc2.csproj)在构建时被忽略。如果从Solution.sln文件中删除项目引用,我可以执行此步骤,但我认为应该有更好的方法来排除某些项目。
有人知道如何配置MSBuild或Solution本身以在CI服务器上构建解决方案时忽略这些项目吗?

1
可能是一个重复的问题,参考如何在MSBUILD中排除项目构建 - 所以你可以创建一个只包含所需项目的新解决方案,或者编写一个只构建所需项目的msbuild脚本。 - stijn
是的,在第一次运行时,该解决方案没有起作用,但在仔细检查依赖项后,它开始工作了。 - Tamas Ionut
1个回答

18
在Visual Studio中创建一个新的构建配置(来自http://msdn.microsoft.com/en-us/library/jj676765.aspx):

要创建一个排除项目的解决方案配置 在菜单栏上,选择“生成”,“配置管理器”。 在“活动解决方案配置”列表中,选择。 在“名称”框中,输入解决方案配置的名称。 在“复制设置”列表中,选择要基于新配置的解决方案配置(例如Debug), 然后选择“确定”按钮。 在“配置管理器”对话框中,清除您想要排除的项目的“生成”列中的复选框,然后 选择“关闭”按钮。 在标准工具栏上,验证新解决方案配置是否为“解决方案配置”框中的活动配置。 在菜单栏上,选择“生成”,“重新生成解决方案”。

然后在TeamCity中,不要使用Debug/Release进行构建,而是将配置设置为使用新的构建配置名称进行构建。
如果您正在从MsBuild脚本调用,则同样适用。只需更改您正在调用的配置即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接