在 TeamCity 中构建特定的 .NET Core 项目时引用传递依赖项时出现问题
Problem referencing transitive dependencies when building a specific .NET Core project in TeamCity
我有一个包含多个项目的解决方案,值得注意的项目是:
ContractProject
DataProject
WebProject
WebProject
是一个.NET Core项目,另外两个是.NET Framework。
这是文件结构,包括 csproj
和 sln
文件:
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 项目无法引用一个级别的项目有关?我已尝试以多种不同的方式设置所需的路径,但均无济于事。
我最终解决了这个问题,实施了一些破解版的解决方案。
问题在于我从 .NET Core 项目引用 .NET Framework 项目,并试图一步构建它们。
变通需要两件事:
首先,我必须包含一个 NuGet 安装程序构建步骤。我不知道如何专门针对 .NET Framework 项目(它不支持 .NET Core),所以我基本上复制了解决方案文件,将其重命名为 NetCoreBuildHelper
,并删除了 Web 项目引用。引用保留在原始解决方案中。然后我在 NuGet 安装程序中引用了 new NetCoreBuildHelper
解决方案。
其次,我必须创建一个 .NET Framework MSBuild 步骤,它构建了其他项目(DataProject 和 ContractProject),引用 NetCoreBuildHelper
解决方案。
如果我可以改进解决方案,我很乐意听到对此的回应,因为它感觉有点像 hack
这个问题比较老 - 但我很想知道您是否获得了更多信息。
据我所知,.Net Framework 和 .Net Core 是根本不同的平台,因此它们不能相互引用。然而,.Net Standard 项目旨在成为 .Net Core 和 .Net Framework 都可以引用的代码共享工具,只要所针对的标准版本是正确的版本即可。例如,.Net Framework 4.8 最多与 .Net Standard 2.0 兼容。如果 .Net Framework 项目是 class 库,则可能值得将它们迁移为 .Net Standard 项目,并从您的 .Net Core 项目中引用它们。
我有一个包含多个项目的解决方案,值得注意的项目是:
ContractProject
DataProject
WebProject
WebProject
是一个.NET Core项目,另外两个是.NET Framework。
这是文件结构,包括 csproj
和 sln
文件:
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 项目无法引用一个级别的项目有关?我已尝试以多种不同的方式设置所需的路径,但均无济于事。
我最终解决了这个问题,实施了一些破解版的解决方案。
问题在于我从 .NET Core 项目引用 .NET Framework 项目,并试图一步构建它们。
变通需要两件事:
首先,我必须包含一个 NuGet 安装程序构建步骤。我不知道如何专门针对 .NET Framework 项目(它不支持 .NET Core),所以我基本上复制了解决方案文件,将其重命名为 NetCoreBuildHelper
,并删除了 Web 项目引用。引用保留在原始解决方案中。然后我在 NuGet 安装程序中引用了 new NetCoreBuildHelper
解决方案。
其次,我必须创建一个 .NET Framework MSBuild 步骤,它构建了其他项目(DataProject 和 ContractProject),引用 NetCoreBuildHelper
解决方案。
如果我可以改进解决方案,我很乐意听到对此的回应,因为它感觉有点像 hack
这个问题比较老 - 但我很想知道您是否获得了更多信息。
据我所知,.Net Framework 和 .Net Core 是根本不同的平台,因此它们不能相互引用。然而,.Net Standard 项目旨在成为 .Net Core 和 .Net Framework 都可以引用的代码共享工具,只要所针对的标准版本是正确的版本即可。例如,.Net Framework 4.8 最多与 .Net Standard 2.0 兼容。如果 .Net Framework 项目是 class 库,则可能值得将它们迁移为 .Net Standard 项目,并从您的 .Net Core 项目中引用它们。