【问题标题】:Visual Studio Ignoring MSBuild file (csproj) CustomizationsVisual Studio 忽略 MSBuild 文件 (csproj) 自定义
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 我觉得真的很愚蠢,没有考虑重新加载解决方案,我认为重新加载项目就足够了。很高兴澄清 VS 缓存。谢谢
  • 类似问题和重新加载解决方案甚至对我都不起作用。在我的“.psproj”文件(PowerShell 项目)中,我的构建目标中有一个响亮的&lt;Error Text="Blah" /&gt;; msbuild 失败,但从 Visual Studio 2013 构建成功,输出为零...
猜你喜欢
  • 2017-12-11
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多