我之前的问题的逻辑跟进:“如何检查解决方案中的所有项目是否符合某些标准? ”
使用 CustomAfterMicrosoftCommonTargets、CustomBeforeMicrosoftCommonTargets 给了我一个很好的答案。他们确实有效,所以我决定不中途停下来。
问题是我不想要机器范围的任务。这对我(它会影响其他构建。当然,这可以处理,但仍然)和我的队友(我不想让他们在系统文件夹中放一些东西......)都不是一个好主意,也不是用于构建服务器。需要什么:在干净的机器上使用 Visual Studio 或 MSBuild 从头开始构建解决方案。
看来 Custom*MicrosoftCommonTargets 是常规属性。
那么,如何指定这个属性呢?从命令行设置它时效果很好。这很奇怪,但这里似乎有一点魔力:作为命令行参数传递给一个构建的属性被传递给所有嵌套构建!
这对于构建服务器来说很好。但这不适用于 Visual Studio 构建。甚至声明解决方案级别的属性也无济于事:静态属性和动态属性都不会转移到嵌套构建中。
...我有一个 hacky 想法,即在解决方案构建之前设置环境变量并在之后将其删除。但我不喜欢它。有更好的想法吗?