【发布时间】:2011-05-12 11:45:09
【问题描述】:
我想禁止在解决方案中构建某些项目(在 TeamCity 构建配置中,以便优化我的提交构建反馈的速度,如果您必须知道的话)。
我知道解决方案配置机制,但不希望强制大量 .sln 文件最终得到我希望能够关闭的所有事物的排列。我有基于约定的规则,我想说“如果我正在执行提交构建,我不想进行最终的安装程序打包”。 (而且我不想把它分解成一个单独的解决方案)。
我不希望在.sln 文件或通过[MsBuildEmitSolution][1] 创建的.proj 文件中使用涉及查找和替换的解决方案。我知道这里涉及out of the box solution 和this slightly related question 的问题。
我看到 MSBuild /v:diag 说:
2>Target "Build" in file "Z.sln.metaproj" from project "Z.sln" (entry point):
Using "MSBuild" task from assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Task "MSBuild"
Global Properties:
BuildingSolutionFile=true
CurrentSolutionConfigurationContents=<SolutionConfiguration>
<ProjectConfiguration Project="{C83D035D-169B-4023-9BEE-1790C9FE22AB}" AbsolutePath="X.csproj" BuildProjectInSolution="True">Debug|AnyCPU</ProjectConfiguration>
<ProjectConfiguration Project="{15E7887D-F1DB-4D85-8454-E4EF5CBDE6D5}" AbsolutePath="Y.csproj" BuildProjectInSolution="True">Debug|AnyCPU</ProjectConfiguration>
</SolutionConfiguration>
所以问题是:
我有没有一种简洁的方式来进行 XPath 替换或类似的更改以产生更改 BuildProjectInSolution="True" 的效果BuildProjectInSolution="False" 以上项目 Y
如果做不到这一点,我可以在.ccproj(一个 Azure 1.4 包)或.csproj(一个通用项目)文件中进行相对简单的编辑,以产生效果(包括触发依赖项目)在命令行中启用的项目msbuild Z.sln 解决方案构建被取消?
【问题讨论】:
-
自定义 MSBuild 文件没有任何问题。我不确定为什么这不能算作一个简洁的解决方案。
-
@Ritch Melton:我已经有一个很棒的自定义 msbuild 文件来构建解决方案集(并行等,实现出色的吞吐量)。我 am 在产品中的子系统可以加载到 VS 并添加和删除项目之后 - 因此是
.sln文件。我指出,如果我唯一能做的就是强制 MSBuild 发出一个等效的 .proj 文件,这很可悲,因为每当 MSBuild 5 改变游戏时(或者当 VS 团队最终获得 . sln 文件不是特殊情况对于实际项目来说有点重要!) -
我觉得你。 sln 文件问题很荒谬。有一些我不理解的 msbuild 问题及其与 Visual Studio 的集成。咆哮太长了,不能在这里发帖。
-
@Ritch Melton:我一般不会让长度等小问题阻止我发泄:D 感谢您的回复。
标签: msbuild teamcity solution azure-packaging