0

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

所有这些在本地机器上都可以正常工作,但是当在 .testsettings 文件(或可能整个文件)的 TFS Build 'deployment' 部分执行时,这些 dll 永远不会在测试目录中实现(日志中也没有关于它们的任何条目)。.testsettings 文件在 TFS 构建配置的相关部分中提到。

有什么想法可能是错的吗?(MSVC 2015,TFS 2013)

4

2 回答 2

0

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

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

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

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

在此处输入图像描述

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

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

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

在此处输入图像描述

优势:

  1. 您集中所有 dll(请记住,如果您依赖本机 dll,则应在 TFS 上安装您需要的框架版本,以便正确运行 MSBuild)
  2. 所有项目都指向相同的依赖项
  3. 您只需维护 Common 文件夹。
  4. 在 Common 文件夹中签入包后,您就可以保证依赖项也托管在 TFS 上,并且当 MSBuild 运行时,它可以找到它们。
于 2017-03-01T14:17:57.477 回答
0

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

我建议您可以将您的 TFS 升级到 TFS 2015 或更高版本以使用VNext build。而且我已经在 Vnext 构建中测试过,它可以工作。这是我的构建定义示例:只需添加 3 个步骤。 在此处输入图像描述

于 2017-03-07T06:03:00.137 回答