Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.testsettings部署节在TFS生成中被忽略_Tfs_Tfsbuild_Visual Studio Test Runner - Fatal编程技术网

.testsettings部署节在TFS生成中被忽略

.testsettings部署节在TFS生成中被忽略,tfs,tfsbuild,visual-studio-test-runner,Tfs,Tfsbuild,Visual Studio Test Runner,我有一个解决方案,包括一堆C#项目和一堆测试。其中一些测试需要很少的本机DLL(由相关nuget软件包提供)。为了解决此问题,创建了一个.testsettings文件,该文件在运行测试之前将DLL(该nuget复制到$(OutDir))复制到测试目录 所有这些都可以在本地计算机上正常工作,但当在.testsettings文件(或整个文件)的TFS Build“deployment”部分下执行时,会被忽略--这些DLL永远不会在测试目录中具体化(日志中也没有关于它们的任何条目)。testsetti

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

所有这些都可以在本地计算机上正常工作,但当在.testsettings文件(或整个文件)的TFS Build“deployment”部分下执行时,会被忽略--这些DLL永远不会在测试目录中具体化(日志中也没有关于它们的任何条目)。testsettings文件在TFS构建配置的相关部分中提到


有什么想法吗?(MSVC 2015,TFS 2013)

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

下面是我如何处理依赖关系的解释,希望能有所帮助

这是我关于这个话题的HMO。我必须避免让TFS负责在单独的文件夹中恢复NuGet包。 我怎么做到的

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

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

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

优点:

  • 集中所有DLL(请记住,如果依赖本机DLL,则应在TFS上安装正确运行MSBuild所需的框架版本)
  • 所有项目都指向相同的依赖项
  • 您只需保存公用文件夹
  • 一旦签入公共文件夹中的包,就可以确保依赖关系也托管在TFS上,并且当MSBuild运行时,它可以找到它们

  • 对于TFS 2013,它只有XAML构建。对于XAML生成,测试运行之前,测试设置文件无法将程序集从Nuget package$(OutDir)复制到
    C:\Builds\…\builddefinition\…\testsetting(tst)\…\Out
    文件夹

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

    是的,软件包安装得很好。在构建期间,相关DLL被复制到$(OutDir)。但是(当执行测试时)它们不会被复制到测试目录中(如我的.testsettings文件中的部署部分所规定)。看起来像是MS tools中的某个错误。我尝试了上面所做的操作,发现.testsetting文件copy-the-dll被复制到文件夹“C:\agent\u-work\46\TestResults*********\Out”中。此路径是您上面提到的“测试目录”还是希望将这些DLL复制到另一个路径?我正在使用Visual Studio测试步骤。是的,没有关于复制这些DLL的日志记录。是的,我(通过.testsettings文件的部署部分)将一些DLL从$(OutDir)复制到“…\TestResults\…\Out”。当我在本地(从VisualStudio)执行时,它工作得很好。由TFS执行生成时不工作(所有不依赖于这些DLL的测试都可以正常工作)。测试运行时,您是否一直监视生成代理服务器上的“TestResult \..\Out\”文件夹?这些DLL是复制到文件夹然后被删除还是永远不会被复制到?作为一种解决方法,您可以使用“复制文件”步骤将这些DLL复制到所需的文件夹,而不是使用.testsetting文件。知道如何将这些文件复制到何处吗?我不知道测试目录名是如何生成的。@C.M.在生成定义中,是否在生成定义的开头添加了Nuget安装步骤?在生成代理服务器中,路径C:\…\agent\u work\46\s\DefinitionName下是否有“Package”文件夹?不确定,现在无法访问生成计算机。但很可能不会——VisualStudio会在构建过程中自动安装缺少的nuget包(如果nuget版本足够高)——因此不需要在build def.Uhm中配置任何与之相关的内容。。。你还是把事情弄糊涂了。我不需要将nuget包中的内容复制到Out文件夹。Nuget包部署得很好,所需的DLL显示在$Out文件夹中也很好。在测试开始之前,我需要将这些DLL复制到测试文件夹(执行测试的地方)。无论如何,我放弃了这件事。似乎是TFS中的一个bug,等待几个依赖项得到修复,并将升级到TFS 2015。@C.M.我指的Out文件夹不是指路径
    “C:\Builds\…\TestSetting\…\Out”
    而不是Nuget包的$(OutDir)。我已经编辑了我的回复。升级到TFS 2015后,可以使用TFS Vnext build,这在Vnext build中已修复。