.testsettings部署部分在TFS构建中被忽略

时间:2017-03-01 07:51:10

标签: tfs tfsbuild visual-studio-test-runner

我有一堆带有大量测试的C#项目的解决方案。其中一些测试需要很少的本机dll(由相关的nuget包提供)。为了解决这个问题,创建了.testsettings文件,它在运行测试之前将dll(nuget强制执行到$(OutDir))复制到测试目录。

所有这一切在本地机器上运行正常,但是当在TFS Build'部署'下执行时,.testsettings文件(或者整个文件)被忽略 - 这些dll从未在测试目录中实现(也没有任何条目在记录他们)。 .testsettings文件在TFS构建配置的相关部分中提到。

任何想法都可能出错? (MSVC 2015,TFS 2013)

2 个答案:

答案 0 :(得分:0)

您是否尝试过查看它们是否已安装在TFS服务器上? 您是否注册了TFS服务器的GAC?

Bellow解释了我如何处理我的依赖关系,希望它有所帮助。

这是我关于这个主题的HMO。我必须避免将TFS的责任归还给单独的文件夹中的NuGet包。 我是怎么做到的?

1-我在项目级别创建一个单独的文件夹。 (普通)

enter image description here

如果您在底部看到有一个Nuget.config文件。贝娄是它的配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="$\..\Common\Packages" />
  </config>
</configuration>

现在我的所有包都托管在Common文件夹中。现在,如果需要,将所有额外的dll放在一个单独的文件夹中。如果您依赖于GAC上托管的本机dll,那么您应该查看TFS服务器(如果那些安装在那里)。 话虽如此,我将所有项目引用指向我的Common文件夹,甚至我的Nuget Repository也从该位置获取文件。

enter image description here

优点:

  1. 你集中所有的dll(记住,如果你依赖于Native dll,你应该在TFS上安装你需要的框架版本才能正确运行MSBuild)
  2. 所有项目都指向相同的依赖项
  3. 你只是保留Common文件夹。
  4. 一旦你在Common文件夹中签入一个包,你就可以保证依赖关系也在TFS上托管,当MSBuild运行时,它可以找到它们。

答案 1 :(得分:0)

对于TFS 2013,它只有XAML版本。对于XAML构建,测试运行前,测试设置文件无法将程序集从Nuget包$(OutDir)复制到C:\Builds\...\builddefinition\...\TestSetting(tst)\...\Out文件夹。

我建议您可以将TFS升级到TFS 2015或更高版本以使用VNext build。我已经在Vnext构建中测试了它,它可以工作。这是我的构建定义示例:只需添加3个步骤。 enter image description here