【发布时间】:2014-06-30 01:57:06
【问题描述】:
我有自定义 MSBuild 任务在解决方案中的每个项目的 : AfterBuild 事件之后执行。 我不想将每个项目文件修改为: 一旦我在 Visual Studio (VS 2012 Ultimate) 中修改项目,比如添加或删除文件/引用,Visual Studio 就会清除对项目文件所做的所有自定义更改。
我不想使用 here 中提到的“CustomAfterMicrosoftCommonTargets”,因为在从 Visual Studio 构建时无法传递此命令行参数:
msbuild.exe app.proj /property:CustomAfterMicrosoftCommonTargets=custom.target
我找到了解决方案here,但我不太明白。 任何人都可以详细说明或帮助我找出更好的解决方案吗?
2014 年 5 月 12 日更新: 我发现如果我在管理员模式下运行 Visual Studio,Visual Studio 不会消除自定义更改。 我现在可以考虑拥有一个具有所需覆盖的自定义导入文件,但我仍然必须为解决方案中的每个项目执行此操作。如果有人添加了一个新项目,他们必须记住添加此自定义项。我不喜欢这样,但也许我现在可以忍受。
我尝试使用“CustomAfterMicrosoftCommonTargets”方法,但我无法从 Visual Studio 的 Pre-build 事件设置此属性,即使以管理员身份运行也无济于事。 我试图从 Pre-Build 事件中设置一个同名的环境变量,但在 MSBuild 执行时我从未得到新值。
谢谢!
【问题讨论】:
-
您确定 VS 会覆盖您对项目文件的更改吗?我在所有项目中都使用了带有自定义目标的 VS2012 和 2013,并且从未遇到过 VS 删除我的目标的问题。
-
^ Seva 所说的:如果 VS 像那样修改你的项目文件,你就做错了。或许可以展示一下您是如何尝试在项目文件中实现自定义目标的?
-
我发现如果您没有在管理员模式下运行,Visual Studio 会清除您的自定义更改。在我切换到管理员模式后,我的更改现在被保留了。我仍然希望有一个不修改解决方案中每个单独项目的解决方案。
标签: msbuild