【发布时间】:2019-08-02 05:25:36
【问题描述】:
我正在努力让 Azure Devops Server 2019(本地)构建我的复杂项目设置。
我有多个构建各种 BizTalk 应用程序的解决方案。其中一些解决方案引用了其他解决方案/存储库中的一些项目。这在 Visual Studio 中运行良好(假设每个人都将他们的存储库命名为默认值,他们这样做)。
为了自动化此构建,我创建了一个多阶段构建管道,按顺序构建每个解决方案。
虽然解决方案 1 将成功构建,但对于解决方案 2,msbuild 任务将不会引用已作为项目引用包含在解决方案中的项目的输出。
这似乎是因为这些引用的项目没有标记为要构建 - 因为如果没有它们依次引用主要解决方案中的其他项目等,它们将无法构建自己。
将所有内容打包成一个大的超级解决方案文件是不可行的。
我希望 msbuild /reference 已在上一步中构建的项目,根据作为项目引用包含在内。但是 msbuild 是一个复杂的野兽,我无法找到实现这一目标的方法。
我正在努力实现的目标是否可能?谁能指出我正确的方向?
【问题讨论】:
-
解决方案可能取决于您的源代码控制的设置方式。您使用的是 GIT 还是 TFVC?如果使用 GIT,是每个应用程序都在自己的存储库中,还是有一个包含所有内容的存储库?根据您的 cmets 关于“让每个人都将其存储库命名为默认值”,我假设您使用 GIT 和每个应用程序的单独存储库,但您能确认一下吗?
-
只是检查提供的信息是否有用。如果您需要进一步的帮助,请告诉我们。
-
将源代码放到构建代理上没有问题。碰巧的是,我将 git 与一个将所有项目结合在一起的超级项目一起使用。这工作正常,并且整个源代码结构可供构建代理使用。如上所述,问题是构建具有对相邻解决方案的项目引用的解决方案。文件都在那里并解析,但 msbuild 不/引用它们。
-
您提到了项目参考,但您也谈到了多种解决方案。项目引用仅在单个解决方案中有效。您是否在解决方案 2 中使用文件路径引用来引用解决方案 1 中的 DLL?
-
确实如此。我有多种解决方案,都需要按顺序构建。部分解决方案参考了之前解决方案中的项目。项目引用是相对的且有效的。如果项目在代理_work目录中的构建服务器上加载到VS中,您可以构建项目就好了。我坚持的地方是如何让 Azure Pipeline 使用与 VS 相同的参数。
标签: tfs msbuild azure-devops tfsbuild azure-pipelines