【问题标题】:Azure DevOps how to build project with references to another project in another solutionAzure DevOps 如何在另一个解决方案中使用对另一个项目的引用来构建项目
【发布时间】:2019-06-18 03:16:24
【问题描述】:

正如标题所说,我的每个解决方案都包含依赖另一个解决方案的项目,例如

解决方案 A

AA 项目 AB项目 交流项目 解决方案 B(仅包含一个类库,该类库有一个文件夹,我将自定义 appsettings.json 文件放入其中。这不能在 DevOps 上构建,因为它不算作项目)

项目 BA 解决方案 AA 和 AC 参考 BA。在Project AA和AC的.csproj中,有一个HintPath显示BA的位置

当我在本地环境中编译时,一切都很好,并且可以正常编译和运行。

我使用 GitHub 作为存储库,当我从 Azure DevOps 引用它并尝试构建我的解决方案 A 时,我收到以下错误:

D:\a_tool\dotnet\sdk\2.2.103\Microsoft.Common.CurrentVersion.targets(2110,5): 警告 MSB3245:无法解析此引用。找不到 程序集“CentralApplicationSettings”。检查以确保 程序集存在于磁盘上。如果您的代码需要此参考, 你可能会得到编译错误。 [D:\a\1\s\ManagementStudio.ClassLibrary\ManagementStudio.ClassLibrary.csproj] D:\a_tool\dotnet\sdk\2.2.103\Microsoft.Common.CurrentVersion.targets(2110,5): 警告 MSB3245:无法解析此引用。找不到 程序集“CentralApplicationSettings”。检查以确保 程序集存在于磁盘上。如果您的代码需要此参考, 你可能会得到编译错误。 [D:\a\1\s\ManagementStudio.Data\ManagementStudio.Data.csproj]

它基本上是说它无法从 GitHub 找到所需的引用,这是有道理的,因为 GitHub 和 DevOps 没有类似的文件夹结构,因此 HintPath 对编译器没有意义。

有人建议我将解决方案 B 更改为 NuGet 包,但问题是,每次部署新解决方案时,我都需要将自定义 appsettings 文件放在那里,这样就不可能了。

是否有另一种方法可以在 Azure DevOps 上构建我的解决方案 A,而无需将其转换为 NuGet 包?

解决方案 A 类似于帐户管理应用程序,因此我打算将它与另一个更专用的应用程序一起部署。

编辑:

解决方案 B 有一个文件夹,我将自定义 appsettings.json 文件放在该文件夹中,以便其他部署的应用程序可以访问它们。它就像一个应用设置库。

如果我将其设为 NuGet 包,我无法将 appsettings.json 文件复制到那里。

【问题讨论】:

  • 将解决方案 B 输出到 Lib 文件夹。上传解决方案 A 可以访问的 Lib 文件夹。因此,当您构建它时,解决方案 A 将引用 Lib 文件夹并能够构建其解决方案。
  • 解决方案 A 在 GitHub 中,解决方案 B 也是。当我从 Azure DevOps 引用它时,它不知道解决方案 B 存在。
  • 我明白这一点。我的意思是,将 B 的程序集输出到本地工作目录中 A 文件夹下的 Lib 文件夹。例如,A\src\Lib\B.dll。现在,将此 Lib 文件夹上传到 Azure DevOps,以便 Azure DevOps 可以引用 B 的最新程序集。您可以通过将 B 解决方案的构建输出目录设置为 A\src\Lib 来做到这一点

标签: c# asp.net azure asp.net-core azure-devops


【解决方案1】:

在包中构建另一个解决方案并将其推送到 nuget 提要,并在对第二个项目进行恢复时使用该提要

【讨论】:

  • 还有其他方法吗?我宁愿不使用nuget。此外,解决方案 B 需要不断加载文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
相关资源
最近更新 更多