繁体   English   中英

DeploymentItem在VS2010和VS2012中的行为方式不同

[英]DeploymentItem behaving differently in VS2010 and VS2012

我有一个VS2010解决方案,我正在尝试升级到VS2012。

我在VS2012中遇到了MSTest单元测试的问题。 所有测试都包括测试类上的DeploymentItem属性。

[TestClass]
[DeploymentItem(@"SubDir\SubDir2\models", "models")]
public class UnitTests
{ ... }

在2010年,它正确地从SolutionDirectory\\SubDir\\SubDir2\\models目录中复制相关文件。

在2012年,它试图从部署测试的目录中复制SolutionDirectory\\UnitTests\\bin\\debug\\SubDir\\SubDir2\\models

我正在寻找一种方法来恢复旧的行为。

如果在解决方案中创建测试设置文件,请在其中启用部署(默认情况下在测试设置中关闭部署)并在测试资源管理器中选择它(测试 - >测试设置 - >选择测试设置文件),然后它应该在不改变代码的情况下工作。

安装vs2012和.net 4.5之后,看起来deploymentitemattribute与移动文件的位置以及可执行文件在执行测试期间查找文件的位置不同步。

廉价的解决方法:

  1. 保留deploymentitemattribute路径
  2. 查看文件的移动位置
  3. 更改测试代码以查看该位置

在此升级之前,mstest非常智能,即使将它们移动到bin目录中的子目录,也可以找到部署项。 似乎不再是这种情况了。

因此,在升级之前,您的单元测试代码行可能如下所示......

FileInfo fi = new FileInfo("temp.txt");

升级后,您的单元测试代码行可能如下所示......

FileInfo fi = new FileInfo("\SubDir\SubDir2\models\temp.txt");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM