DeploymentItem在VS2010和VS2012表现不同(DeploymentItem be

2019-07-31 04:41发布

我有我想要升级到VS2012 VS2010一个解决方案。

我在用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

我正在寻找一种方式来恢复原来的行为。

Answer 1:

如果你创建一个测试设置,在您的解决方案文件,能够在它部署(默认情况下部署是关中测试设置)和测试资源管理器中选择它(测试 - >测试设置 - >选择测试设置文件),那么它应该在不改变代码以及工作。



Answer 2:

安装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");


文章来源: DeploymentItem behaving differently in VS2010 and VS2012