【发布时间】:2011-07-29 16:31:24
【问题描述】:
注意:Visual Studio 2010 SP1 / MSBuild 4.0
我为这个错误快疯了,我不明白为什么 Visual Studio 会这样。我正在为特定解决方案中的项目编写自定义 .targets 文件。我已经编辑了.csproj 文件:
<Include Project="..\MyTargets.targets" />
在文件底部附近的Microsoft.CSharp.targets 之后。这个想法是这个目标文件将通过修改_____DependsOn 属性来注入要执行的操作,就像PostSharp 集成自身的方式一样。
在摸索我的目标如何无法运行后,我决定在命令行中使用 MSBuild 运行它并查看格式正确的颜色输出。
在命令行中,我的目标运行。从 Visual Studio(即使使用清理/重建),我的目标不运行。
我已经吸引了BuildDependsOn 来像这样运行我的目标:
<PropertyGroup>
<BuildDependsOn>
MyTargetGoesHere;
$(BuildDependsOn)
</BuildDependsOn>
</PropertyGroup>
我的第一个想法是我有错误的文件。我验证了文件,它是正确的。然后我检查它是否陈旧。让 Visual Studio 进行一些更改,保存,运行。 Visual Studio 的新更改生效,仍然没有运行我的目标。
所以我在这里变得绝望了。我在我的目标文件中放了一个 BLARING SYNTAX ERROR。 MSBuild 爆炸,Visual Studio 编译项目成功。
- 我做错了什么?
- Visual Studio 不使用 MSBuild 文件吗?
- 它是否从
Microsoft.Common.targets调用某个超级秘密目标而不是“构建”? - 为什么 msbuild 会以一种方式运行,而 studio 会以另一种方式运行,我认为它们旨在协同工作...
【问题讨论】:
-
在对 .targets 文件进行更改后,您是否关闭并重新打开了解决方案文件?
-
有趣,Visual Studio 缓存 msbuild 文件还是什么?我没有关闭解决方案,但我已经多次重新加载项目。
-
VS 将缓存项目导入的任何 msbuild 文件。对项目本身的更改将导致重新加载项目,但不会重新加载导入的文件,这就是需要重新加载解决方案的原因。
标签: .net visual-studio msbuild