TFS 2013构建 - 类库构建输出路径并不意味着什么?

时间:2014-07-01 13:38:13

标签: c# tfs build tfsbuild

我希望有人可以帮助我。我有一个由两个网站和两个类库组成的解决方案。其中一个类库是一个共享库,可以在我们的许多项目中使用,因此它的输出存储在一个共享位置(D:\ Applications \ SharedLibraries \ Bus_logic),所以我们可以从那里引用dll。我们在本地机器和构建服务器上有这个目录结构。

这在我的本地机器上完全正常。在本地构建解决方案会将更新的dll推送到本地D:\ Applications \ SharedLibraries \ Bus_logic文件夹。我们旧的CCNet版本在构建服务器上也会这样做。

然而,对于TFS,类库的输出路径似乎并不重要。我有一个CI构建解决方案,类库永远不会输出到该路径。它们只是在drop文件夹中组合在一起。

有没有简单的方法可以确保构建将这些dll复制到正确的位置,或者我是否必须为编译共享库的每个解决方案创建自定义构建模板,以便将dll复制到右侧?目录

2 个答案:

答案 0 :(得分:0)

我最近一直在使用TFS构建,所以我希望以下有帮助。

在您执行以下任何操作之前,我建议您创建一个新的构建定义和新的构建模板(通过编辑构建定义 - >处理 - >新模板 - >从现有复制)来测试这种方法。

TFS为MSBuild的OutDir参数提供自定义路径,为此传递的变量称为outputDirectory。设置此步骤的步骤深入此处的默认构建模板,打开它并导航到Run On Agent - >尝试编译,测试和关联 - >序列 - >编译,测试和关联 - >尝试编译和测试 - >编译和测试 - >对于每个配置 - >编译和测试 - >初始化变量,在那里你会找到一个名为Initialize OutputDirectory的任务,默认情况下它被设置为'BinariesDirectory / Platform / Configuration'文件夹。您可以将其更改为您自己的自定义逻辑。

在Run MSBuild任务上将OurDir参数设置为no可能是一种更简单的方法,因为我认为这将使用项目默认路径。这可以在模板中找到,Run On Agent - >尝试编译,测试和关联 - >序列 - >编译,测试和关联 - >尝试编译和测试 - >编译和测试 - >对于每个配置 - >编译和测试 - >如果BuildSettings.HasProjectsToBuild - >对于每个项目 - >尝试编译项目 - >编译项目。

通过修改解决方案或项目文件可能有一种更优雅的方式,但我还没有意识到这一点。

答案 1 :(得分:0)

有两种很好的方法可以解决这个问题。

  1. 检查dll中的内容 - 您可以在源代码中创建一个文件夹,其中包含您所依赖的文件。然后在构建中添加一个映射,以使它们到达一个众所周知的位置。
  2. 您可以将DLL打包为NuGet包并依赖它。
  3. 1价格低廉,开朗且有效,但不如您当前的解决方案。 #2是正确的做事方式。 NuGet旨在解决这些问题。