【发布时间】: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