在 TeamCity 中构建特定 .NET Core 项目时引用传递依赖项的问题

Posted

技术标签:

【中文标题】在 TeamCity 中构建特定 .NET Core 项目时引用传递依赖项的问题【英文标题】:Problem referencing transitive dependencies when building a specific .NET Core project in TeamCity 【发布时间】:2020-05-07 16:58:05 【问题描述】:

我有一个包含多个项目的解决方案,值得注意的项目是:

ContractProject DataProject WebProject

WebProject是一个.NET Core项目,另外两个是.NET Framework。

这是文件结构,包括csprojsln 文件:

DataProject 引用 Dapper,这是一个 NuGet 包。

尝试在 TeamCity 中运行构建配置时,我收到以下(略微减少,已编辑)错误:

DapperWorklistRepository.cs(4,7): error CS0246: The type or namespace name 'Dapper' could not be found (are you missing a using directive or an assembly reference?) [REDACTED_PATH_TO_DATAPROJECT_CSPROJ_FILE]
......
Build FAILED.
......
Process exited with code 1
Step Build (.NET Core (dotnet)) failed

这是我唯一的构建步骤(.NET Core):

知道我做错了什么吗?我有一种感觉,这可能与 Web 项目无法参考上一级项目有关?我尝试以多种不同的方式设置所需的路径,但均无济于事。

【问题讨论】:

【参考方案1】:

我最终弄清楚了这一点,实施了一些解决方案。

问题在于我从 .NET Core 项目中引用 .NET Framework 项目,并尝试一步构建它们。

解决方法需要做两件事:

首先,我必须包含一个 NuGet 安装程序构建步骤。我不知道如何专门针对 .NET Framework 项目(它不支持 .NET Core),所以我基本上复制了解决方案文件,将其重命名为 NetCoreBuildHelper,并删除了 Web 项目引用。引用保留在原始解决方案中。然后我在 NuGet 安装程序中引用了 new NetCoreBuildHelper 解决方案。

其次,我必须创建一个 .NET Framework MSBuild 步骤,该步骤构建了其他项目(DataProject 和 ContractProject),并引用了 NetCoreBuildHelper 解决方案。

如果我可以改进解决方案,我很乐意听到对此的回应,因为这感觉有点像 hack

【讨论】:

以上是关于在 TeamCity 中构建特定 .NET Core 项目时引用传递依赖项的问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥构建后步骤 (xcopy) 偶尔会在 TeamCity 构建中以代码 2 退出?

使用 TeamCity 构建后如何部署?

CruiseControl [.Net] 与 TeamCity 的持续集成?

Visual Studio 2012 解决方案 TeamCity 中的 MSBuild

TeamCity - MSBuild 代码分析

TeamCity FxCop 选择 MinimumRecommendedRules.ruleset 无效