组织构建输出(集中)?

时间:2010-09-11 17:01:03

标签: visual-studio-2010 build-process

我有一个解决方案,它构建了许多需要在特定文件夹层次结构中工作的可执行文件和程序集。大多数.exe文件及其附带的.dll文件必须位于一个文件夹中,因为主exe将生成(通过process.start)其他exe文件,它们将动态加载程序集。

TS将所有输出重定向到一个工作正常的公共文件夹。在安装中,主应用程序的所有输出也将在一个目录中结束。

在解决方案中有没有一种集中的方法(我们没有用户界面)?到目前为止,我的另一个选择是在每个看起来很复杂的项目中改变它 - 很多工作和不稳定(到目前为止,我有大约30个左右的项目)。

2 个答案:

答案 0 :(得分:1)

在项目中,您有以下主要选项:

  1. 配置项目的输出路径,以便将构建的程序集写入共享文件结构。
  2. 将xcopy的构建程序集添加到共享文件结构中的构建后脚本。
  3. 也可以(如TFS Build所做的那样)覆盖整个构建的输出文件夹,但AFAIK只能对单个文件夹进行此操作(如TFSBuild所做),因此您无法构建文件层次结构。 / LI>

    1,2的缺点是你必须设置每个项目才能做到这一点。

    我倾向于使用(2)“后构建脚本”方法。原因是:

    • 核心版本保持不变。在桌面版本上,程序集是在本地编写的,而在服务器(TFS)构建中(烦人地)将所有内容重定向到共享文件夹。无论TFS Build如何干扰输出,目标文件的xcopy都能正常工作。

    • 使用xcopy可以完全控制输出(构建一个hieararchy而不是将所有内容整合到一个文件夹中),并且只复制您需要的项目。我更愿意只选择我最终安装的Iwant文件,而不是依赖于自动进程,这些进程会释放大量不必要的垃圾(xml doc和pdb文件)

    • 使用VS2010时,“复制本地”选项似乎完全搞砸了文件引用。我们通过引用共享文件夹中的预构建dll来使用我们的库,但是在复制之后,本地VS经常更改对调试文件夹中“复制的本地”dll的引用,而不是我们的共享库文件夹。这意味着对库的任何后续更改都不会被构建获取!哎呀!我找到的唯一解决方案是为每个参考禁用“复制本地”。

答案 1 :(得分:0)

通过TS你的意思是TFS和MS Build?为什么不能只配置构建输出在项目文件中的位置?