0

我们有一个包含许多类库项目的解决方案。它们各自产生一组 DLL。

我们想要部署这些的方式是将它们安装到 GAC。所以我们可以有一个脚本(BAT 文件)在 DLL 上运行 Gacutil /i。

我们目前使用 TFS 使用默认的 TFS 构建模板来构建我们的解决方案。

我们需要 TFS 来构建解决方案,并使用 DLL 和安装脚本为每个项目(发布包)生成文件夹。因此,之后我们需要做的就是转到放置文件夹,查看文件夹列表(发布包),以及在文件夹中安装每个类库所需的一切。

例如

-> 拖放文件夹
  - >项目1
     -> Proj1.dll
     -> 安装.bat
  - >项目2
     -> Proj2.dll
     -> 安装.bat
  -> Proj3
     -> Proj3.dll
     -> 安装.bat

更新:

对于每个项目,我都设置了以下构建后事件:

powershell -executionpolicy 绕过 -file "$(ProjectDir)Deployment\CreateDeploymentPackage.ps1" -Bin $(TargetDir) -Source $(ProjectDir) -Name $(ProjectName)

在我的源代码中,我有上述 powershell 脚本Deployment\CreateDeploymentPackage.ps1

powershell 脚本如下所示:

参数(
[string][parameter(mandatory=$true)] $Bin,
[string][parameter(mandatory=$true)] $Source,
[字符串][参数(强制=$true)]$Name)

$packagePath = "$Bin$Name"
新项目“$packagePath”-类型目录

复制项目 *.dll $packagePath -recurse

复制项目“$deploymentScripts\Install.ps1”“$packagePath”-recurse
复制项目“$deploymentScripts\Uninstall.ps1”“$packagePath”-recurse

现在这在我本地构建时有效。它拾取 bin 目录中的所有 dll 并将它们复制到文件夹中。

这也适用于 TFS 构建服务器,但仅适用于自行构建项目时。

问题在于 TFS 如何将我的解决方案中的所有 dll 构建到单个 bin 输出目录中。

问题

有没有办法只复制与项目相关的dll(包括依赖项)而不明确列出每个dll?

4

1 回答 1

1
  1. 一点都不重要,您可以设置最适合您需要的源代码控制。

  2. 阅读这篇MSDN 文章,该文章解释了如何控制 TFS 放置程序集的位置。对于您的 install.bat 文件,您可以将它们检入 TFS 并使用构建后步骤将它们与您的输出一起复制。如果你真的想要,你可以创建一个自定义的 TFS 活动来生成它们作为构建的一部分 - 阅读 Ewald Hofman 的这个博客系列,了解如何自定义 TFS 构建。

于 2012-11-07T22:09:26.413 回答