DeploymentItem behaving differently in VS2010 and VS2012

浪尽此生 提交于 2019-12-04 19:19:47

问题


I have a VS2010 solution that I'm trying to upgrade to VS2012.

I'm having a problem with the MSTest unit tests in VS2012. All of the tests include DeploymentItem attributes on the test class.

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

In 2010, it's correctly copying dependent files from the SolutionDirectory\SubDir\SubDir2\models directory.

In 2012, it's attempting to copy from the directory where the tests are deployed SolutionDirectory\UnitTests\bin\debug\SubDir\SubDir2\models

I'm looking for a way to restore the old behavior.


回答1:


If you create a test settings file in your solution, enable deployment in it (by default deployment is off in the test settings) and select it in the test explorer (Test -> Test Settings -> Select test settings file), then it should work without changing the code as well.




回答2:


After installing vs2012 and .net 4.5, looks like the deploymentitemattribute is out of sync with where it moves the files and where the executable looks for the files during execution of tests.

Cheap workaround:

  1. Leave the deploymentitemattribute path as-is
  2. See where the file is being moved to
  3. Change the test code to look in that location

Before this upgrade mstest was smart enough to find deployment items even if they were moved to a sub directory in the bin directory. Seems this is no longer the case.

So before the upgrade a line of your unit test code might look like this...

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

After the upgrade a line of your unit test code might look like this...

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


来源:https://stackoverflow.com/questions/12132164/deploymentitem-behaving-differently-in-vs2010-and-vs2012

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!