C# 测试如何在TFS 2012构建中引用父源目录中的外部资源?

C# 测试如何在TFS 2012构建中引用父源目录中的外部资源?,c#,mstest,tfsbuild,C#,Mstest,Tfsbuild,我正在设置TFS 2012构建代理,但在引用外部文件的单元测试中遇到了一个小问题。(是的,是的,这很糟糕……没有参数!我仍然需要运行构建)测试正在使用MSTest(VisualStudio.TestTools.UnitTesting)框架 目前,在解决方案根目录下有一个Resources文件夹,所有测试(不幸的是,它们在子目录中的深度不同)加载具有某种级别的相对路径的文件(。\\\\\\\\\\\\Resources\\resource.txt) 如您所知,TFS将所有输出复制到与src处于同一

我正在设置TFS 2012构建代理,但在引用外部文件的单元测试中遇到了一个小问题。(是的,是的,这很糟糕……没有参数!我仍然需要运行构建)测试正在使用MSTest(VisualStudio.TestTools.UnitTesting)框架

目前,在解决方案根目录下有一个
Resources
文件夹,所有测试(不幸的是,它们在子目录中的深度不同)加载具有某种级别的相对路径的文件(
。\\\\\\\\\\\\Resources\\resource.txt

如您所知,TFS将所有输出复制到与
src
处于同一级别的
bin
文件夹,该文件夹具有所需的
资源
文件夹。无法将此文件夹复制到目录结构中足够高的位置,以使生成代理通过测试

我希望这两个问题中的任何一个都能给我一个解决这个问题的权宜之计:

  • 是否有任何环境变量(或类似的东西)可用于检测单元测试正在通过TFS构建代理运行,并相应地更改代码中资源文件的路径

  • 有没有一种简单的方法可以告诉TFS将文件输出到
    bin
    文件夹中,其层次结构与在Visual Studio中构建时通常的层次结构相同?(我之所以说“简单”是因为我发现一些相当长的构建修改可能可以处理这个问题)


  • 选项1:是的,您可以将文件夹及其内容复制到\bin\Debug文件夹:

  • 将文件夹添加到测试项目中
  • 将文件添加到该文件夹中,并在Visual Studio中设置每个文件属性“复制到输出目录”:“始终复制”
  • 选项2:您还可以将文件放入资源文件中

    选项3:或使用以下属性在测试中声明该文件:

    [TestMethod]
    [DeploymentItem("mytestdata.xml")] 
    

    选项1:不幸的是,我们不想复制这些外部资源文件(有些是300MB),因为有几个不同的测试程序集使用它们,但这需要改变很多现有的测试代码。选项3可能有一些承诺:)我将进一步研究。我已经对选项3进行了更多的测试,它在本地运行和在构建控制器上运行之间的相对父路径似乎有一些奇怪的特征