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