C#使用静态变量作为DeploymentItem的参数

Sar*_*els 5 c# mstest path deploymentitem

我想DeploymentItem在MSTest单元测试中使用静态变量作为参数,但似乎我不能这样做.当单元测试运行时,需要将一个XSL文件与DLL文件一起复制,并将该位置定义为

private static string _xslPath = Path.Combine("MyProjectDir", "transform.xsl");
Run Code Online (Sandbox Code Playgroud)

但是,当我然后执行以下操作时:

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(_xslPath)]
public void XmlToResultsTest() { }
Run Code Online (Sandbox Code Playgroud)

我得到这个构建错误:

属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式

好的,好的,但是自己组装路径似乎太脏了:

[DeploymentItem(@"MyProjectDir\transform.xsl")]
Run Code Online (Sandbox Code Playgroud)

我在这里过于挑剔想要使用Path.Combine吗?我还缺少另一种选择吗?我想我可以把XSL文件放在根解决方案目录中,这样我就不必将项目目录作为路径的一部分传入.

Mar*_*ell 10

属性只能使用常量字符串,所以不能:你不能这样做(你必须使用预组合版本,或文字串联 - 不是Path.Combine).您也可以使用测试项目部署设置(testrunco​​nfig?),但坦率地说,我更喜欢使用NUnit方法来标记文件(在csproj中,与正常情况一样)进行部署.我还没弄清楚为什么MS添加了一种单独的方式来定义这个......