【问题标题】:Visual Studio not rebuilding after content file change内容文件更改后 Visual Studio 未重建
【发布时间】:2011-04-09 02:58:58
【问题描述】:

我有一个单元测试项目,其中包含一些用于数据驱动测试的 XML 文件。 这些文件设置为 Build Action ContentCopy if newerCopy always

在大多数情况下,这工作正常。但是,当我更改其中一个数据文件而不更改任何代码时,Visual Studio 根本不会触发构建操作,也不会复制任何 XML 文件。实际上,我正在使用旧数据文件运行单元测试。

我可以触发手动构建,但我希望尽可能避免此类错误。是否有某种方法可以让 Visual Studio (2008) 在每次有人更改内容文件时执行复制操作

澄清: XML 文件在单元测试项目中,而不是在生产代码项目中。对于正在运行的测试中设置的文件,我确实有一个相关的 [DeploymentItem] 属性。

【问题讨论】:

标签: .net visual-studio build


【解决方案1】:

我不知道它是否对您的情况有所帮助,但为了解决这个问题,我将 XML 文件的 Build Action 更改为 Embedded Resource,它似乎可以解决问题。

【讨论】:

  • 看起来像个 hack,但似乎确实可以在 VS2010 上运行。
  • 仍然适用于 vs2019。你是我的英雄。谢谢
【解决方案2】:

这似乎是一个简单的答案,所以如果你已经这样做了,请原谅我。但是我曾经在编辑文本文件数据源后遇到过这个问题。

为了解决这个问题,我必须在每次更改后清理项目,这对我正在处理的大型项目来说很烦人。

一旦我最终在新的 Windows 副本上安装 VS2008,就不再需要它了,因此这可能是一个配置问题。

【讨论】:

    【解决方案3】:

    在运行测试之前,Visual Studio 会使用 Build and Test 目标在您的项目上调用 MSBuild。如果您查看 Microsoft.CSharp.targets(请参阅 http://msdn.microsoft.com/en-us/library/ms164312.aspx),您可以跟踪 Content ItemGroup 中的文件如何作为构建过程的一部分被复制。 AFAIK,它们被声明为 Bulild 子目标之一的输入和输出,因此如果它们的时间戳发生变化,MSBuild 应该真正考虑复制它们。

    您能否确保: * 保存对文件的更改 * 您正在使用 NTFS * 当您从 msbuild cmd-line 运行构建时,当 xml 文件更改时它仍然不会重新构建吗?

    Visual Studios MSBuild 集成非常糟糕,它显然没有做直接调用 MSBuild cmd-line 的事情。 (它有进口被缓存的问题和各种疯狂的、非直觉的事情)。

    【讨论】:

      猜你喜欢
      • 2015-10-28
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      相关资源
      最近更新 更多