【问题标题】:TFS 2013 build - class library build output path doesn't mean anything?TFS 2013 build - 类库构建输出路径没有任何意义?
【发布时间】:2014-08-22 02:21:23
【问题描述】:

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

这在我的本地机器上运行良好。在本地构建解决方案会将更新后的 dll 推送到本地 D:\Applications\SharedLibraries\Bus_logic 文件夹。我们旧的 CCNet 构建将在构建服务器上执行相同的操作。

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

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

【问题讨论】:

    标签: c# tfs build tfsbuild


    【解决方案1】:

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

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

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

    在 Run MSBuild 任务中将 OurDir 参数设置为空可能是一种更简单的方法,因为我假设这将使用项目的默认路径。这可以在模板中找到,Run On Agent -> Try Compile, Test and Associate -> Sequence -> Compile, Test and Associate -> Try Compile and Test -> Compile and Test -> For Each Configuration -> Compile and测试 -> If BuildSettings.HasProjectsToBuild -> 对于每个项目 -> 尝试编译项目 -> 编译项目。

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

    【讨论】:

      【解决方案2】:

      确实有两种好方法可以点亮它。

      1. 检入 dll - 您可以在源代码中创建一个文件夹,其中包含检入您所依赖的文件。然后在构建中添加一个映射以将它们放到一个众所周知的位置。
      2. 您可以将 DLL 打包为 NuGet 包并对其进行依赖。

      1 便宜、愉快且不会出错,但不如您当前的解决方案那么多。 #2 是做事的正确方式。 NuGet 旨在解决这类问题。

      【讨论】:

        猜你喜欢
        • 2012-02-15
        • 2015-05-11
        • 2015-09-18
        • 1970-01-01
        • 2016-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多