gpt4 book ai didi

visual-studio - 如何在 Visual Studio 构建中模拟/p msbuild 参数?

转载 作者:行者123 更新时间:2023-12-04 06:03:42 24 4
gpt4 key购买 nike

我上一个问题的逻辑后续:“How to check all projects in solution for some criteria?
我得到了一个很好的答案来使用 CustomAfterMicrosoftCommonTargets、CustomBeforeMicrosoftCommonTargets。他们确实有效,所以我决定不中途停下来。

问题是我不想要机器范围的任务。这对我来说都不是一个好主意(它会影响其他构建。当然,这可以处理,但仍然如此),也不对我的队友(我不想让他们在系统文件夹中放一些东西......),也不用于构建服务器。
需要什么:使用 Visual Studio 或 MSBuild 在干净的机器上从源代码控制中从头开始构建解决方案。

看起来 Custom*MicrosoftCommonTargets 是常规属性。

那么,如何指定这个属性呢?当从命令行设置它时,它工作得很好。
这很奇怪,但这里似乎有点神奇:作为命令行参数传递给一个构建的属性被传递地传递给所有嵌套构建!

这对于构建服务器来说很好。但这不适用于 Visual Studio 构建。甚至声明解决方案级别的属性也无济于事:静态和动态属性都不会转移到嵌套构建中。

...我有一个在解决方案构建之前设置环境变量并在之后删除它的hacky 想法。但我不喜欢。有什么更好的想法吗?

最佳答案

我使用了与@Spider M9 不同的技术。我希望解决方案树/当前目录中的所有子目录中的所有项目都使用扩展构建抛出 Custom*MicrosoftCommonTargets。我不喜欢被迫更改每个新项目以导入自定义目标/ Prop 。

我放置特殊文件,比方说 msbuild.include , 在根目录和我的每个项目的自定义目标加载器中尝试在 中找到它. , ..\ , ..\..\ , 等等。 msbuild.include 包含触发自定义操作执行的标志。如果加载器找不到此文件,它将禁用加载所有自定义目标和停止点。这使我能够将我的构建扩展与工作存储库中的项目一起使用,而不是与开源项目一起使用。

如果您有兴趣,我可以发布加载程序。这是一个非常简单和优雅的解决方案。

例如,我可以使用我的 key 对所有子文件夹中所有项目中的任何程序集进行签名。

关于visual-studio - 如何在 Visual Studio 构建中模拟/p msbuild 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5734470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com