注意:Visual Studio 2010 SP1 / MSBuild 4.0
我被这个bug搞疯了,我不明白为什么Visual Studio会表现出这种行为。我正在为我的解决方案中的特定项目编写自定义.targets
文件。我已经编辑了.csproj
文件:
<Include Project="..\MyTargets.targets" />
在文件底部的
Microsoft.CSharp.targets
之后。这个目标文件的想法是通过修改_____DependsOn
属性来注入要执行的操作,就像PostSharp集成自身一样。在我苦思冥想为什么我的目标不会运行后,我决定在命令行中使用MSBuild运行它,并查看漂亮格式的彩色输出。
在命令行中,我的目标会运行。从Visual Studio(即使使用clean/rebuild),我的目标也不会运行。
我已经将
BuildDependsOn
挂钩到我的目标上,像这样运行我的目标:<PropertyGroup>
<BuildDependsOn>
MyTargetGoesHere;
$(BuildDependsOn)
</BuildDependsOn>
</PropertyGroup>
我的第一反应是我选错了文件。我核实了文件,它是正确的。然后我检查它是否过期。让 Visual Studio 做一些更改,保存,运行。Visual Studio 的新更改生效了,但仍未运行我的目标。
所以我变得绝望了。我在我的目标文件中放置了 显眼的语法错误。MSBuild 爆炸了,但 Visual Studio 成功地编译了项目。
- 我做错了什么?
- Visual Studio 不使用 MSBuild 文件吗?
- 它调用了
Microsoft.Common.targets
中的某个超级秘密目标而不是 "Build" 吗? - 为什么 msbuild 表现方式不同于 studio,我以为它们是设计成一起工作的...