Visual Studio忽略MSBuild文件(csproj)自定义

时间:2011-07-29 16:31:24

标签: .net visual-studio msbuild

注意:Visual Studio 2010 SP1 / MSBuild 4.0

我对这个bug感到疯狂,我无法理解为什么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
  • 调用了一些超级秘密目标而不是“Build”
  • 为什么msbuild会以单向和另一种方式工作,我认为它们的设计是为了协同工作......

1 个答案:

答案 0 :(得分:12)

总结上述注释,对导入的项目文件的更改不会触发重新加载,导入项目的更改也不会导致重新加载导入。需要解决方案文件重新加载以捕获导入中所做的更改。