我有一个单元测试项目,其中包含一些用于数据驱动测试的XML文件。这些文件设置为“生成操作”**“内容”**和"如果更新则复制“或”始终复制“。
在大多数情况下,这可以正常工作。但是,当我更改其中一个数据文件而不更改任何代码时,Visual Studio根本不会触发生成操作,也不会复制任何XML文件。实际上,我是在使用旧的数据文件运行单元测试。
我可以触发手动生成,但我希望尽可能避免此类错误。是否有某种方法可以使Visual Studio(2008)在每次有人更改内容文件时 * 仅 * 执行复制操作?
澄清一下:XML文件在单元测试项目中,而不是在生产代码项目中。我确实有一个相关的[DeploymentItem]
属性用于正在运行的测试的文件集。
3条答案
按热度按时间wlzqhblo1#
我不知道它是否对您的情况有帮助,但为了解决这个问题,我将XML文件的构建操作更改为嵌入式资源,它似乎起到了作用。
5m1hhzi42#
这似乎是一个简单的答案,所以请原谅我,如果你已经这样做了。但我曾经有这个问题后,编辑文本文件的数据源。
为了解决这个问题,我不得不在每次更改后清理项目,这在我正在进行的一个大项目中是很烦人的。
一旦我在Windows的新副本上安装了VS2008,这就不再需要了,所以这可能是一个配置问题。
anhgbhbe3#
在运行测试之前,Visual Studio将使用Build and Test目标对项目调用MSBuild。如果您查看Microsoft.CSharp.targets(请参见http://msdn.microsoft.com/en-us/library/ms164312.aspx),则可以跟踪Content ItemGroup中的文件是如何作为Bulild进程的一部分进行复制的。当然,它们是Bulild子目标之一的声明输入和输出,因此如果它们的时间戳发生更改,MSBuild应确实考虑复制它们。
您能否确保:
Visual Studios MSBuild集成非常糟糕,它显然没有直接调用MSBuild命令行(它有导入被缓存的问题,以及各种疯狂的、非直观的事情)。