Using MSTest, what is the relative path root of the DeploymentItemAttribute.
What is the relative path root of DeploymentItemAttribute?
9.8k views Asked by Anthony Mastrean AtThere are 3 answers
To assume that the RelativePathRoot default is the dir where your solution resides was not correct in my case, nor was RelativePathRoot defined within my .testrunconfig file. I found the RelativePathRoot default to be the /bin/debug dir for the solution.
Walking back from that point, then walking up to my file that I was attempting to deploy for the unit test worked fine.
So I'm gonna add my experience.
So if you're using .testrunconfig file, that will trump (override) what I'm saying below.
I figured there were a few options.
Relative to the current .csproj
Relative to the .sln
Relative to the current .cs file
I finally got my build system working by using the "relative to the current .cs file" approach.
In my example, I needed a Xsd from a different project copied over for my UnitTest. But the type of file does not matter.
Example:
c:\myfolder\MyXsdProject\XSDs\MyCoolXsd.xsd
c:\myfolder\MyCsharpUnitTestProject\MySubFolder1\MySubFolder2\MyUnitTestClass.cs
namespace MyCsharpUnitTestProject.MySubFolder1.MySubFolder2
{
[TestClass]
[DeploymentItem(@"..\..\..\MyXsdProject\XSDs\MyCoolXsd.xsd")]
public class MyUnitTestClass
{
}
}
Per the MSDN page...
That setting is, by default, the Solution directory. So, if you have this project structure
And you want to deploy required.xml, you're going to create a DeploymentItemAttribute like this
It seems the file properties need to be set to 'Content' and 'Copy always' or 'Copy if newer'. There are advanced examples on this MSDN page.