我希望有人可以帮助我。我有一个由两个网站和两个类库组成的解决方案。其中一个类库是一个共享库,可以在我们的许多项目中使用,因此它的输出存储在一个共享位置(D:\ Applications \ SharedLibraries \ Bus_logic),所以我们可以从那里引用dll。我们在本地机器和构建服务器上有这个目录结构。
这在我的本地机器上完全正常。在本地构建解决方案会将更新的dll推送到本地D:\ Applications \ SharedLibraries \ Bus_logic文件夹。我们旧的CCNet版本在构建服务器上也会这样做。
然而,对于TFS,类库的输出路径似乎并不重要。我有一个CI构建解决方案,类库永远不会输出到该路径。它们只是在drop文件夹中组合在一起。
有没有简单的方法可以确保构建将这些dll复制到正确的位置,或者我是否必须为编译共享库的每个解决方案创建自定义构建模板,以便将dll复制到右侧?目录
答案 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)
有两种很好的方法可以解决这个问题。