背景
在 Visual Studio 2013 中,针对 TFS 2012 实例,我的解决方案中有 2 个项目:
- .sqlproj 数据库项目(“项目 D”)。该项目输出一个 .dll 和一个 .dacpac 文件。
- 包含对数据库项目的项目引用的 WPF 项目(“项目 W”)。
项目 W 的构建输出文件夹必须包含来自项目 D 的 .dll 和 .dacpac 文件——除了它自己的 .exe。正如预期的那样,项目引用只会将项目 D 中的 .dll 复制到项目 W 的输出文件夹中。为了也获得 .dacpac 文件,我在项目 W 中包含一个链接文件引用,指向来自项目 D 输出的 .dacpac 文件。
问题
这在 Visual Studio 中运行良好,但在 TFS 构建中失败,并出现以下错误:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (3686):无法复制文件“d:\TfsBuilds\2\...\ProjectD\bin\debug\ProjectD.dacpac “因为没有找到。
我尝试过的事情(不成功)
类似的问题,例如this和this,有不同的原因,并不能帮助我解决问题。
解决方案:
- 控制二进制输出文件夹的文件夹结构,或
- 将解决方案构建的所有输出合并到一个文件夹中
仍然失败,因为在每种情况下,项目 D 的构建输出(包括 .dacpac 文件)都被放置在构建代理的文件夹下在放置文件夹中,而项目 W 的链接文件引用期望 .dacpac 文件位于文件夹中在项目 D 的源文件下在构建代理的映射工作空间内,相对于项目 W(即“..\ProjectD\bin\debug\ProjectD.dacpac”。)(为准确而编辑的段落。)
问题
如何在此特定场景中配置我的解决方案/项目,以便它们在 Visual Studio 和 TFS Build 中都工作?
(在我看来,理想的情况是如果有某种特殊的“项目引用”可以获取引用项目的所有输出,而不仅仅是 .dll。)