Skip to content

解决 The "CheckIfPackageReferenceShouldBeFrameworkReference" task could not be loaded from the assembly #760

@douchangfeng

Description

@douchangfeng

原文:Puerts项目在Unreal Engine 5.4.2中Rider编译问题的解决方案 作者:胡唯隽

问题背景
在使用Puerts项目与Unreal Engine 5.4.2(源码版)配合开发时,开发者可能会遇到一个特定的编译问题。当使用Rider 2024.2.4直接打开并编译puerts_unreal_demo工程时,会出现与.NET SDK相关的错误提示。

错误现象
编译过程中会报出两个主要错误:

"CheckIfPackageReferenceShouldBeFrameworkReference"任务无法加载
"AllowEmptyTelemetry"任务无法加载
错误信息表明系统无法找到System.Runtime, Version=8.0.0.0的相关文件,这通常发生在.NET环境配置不正确的情况下。

问题根源
经过分析,这个问题的主要原因是开发环境中安装了高版本的.NET环境(如.NET 8.0),而Rider IDE会自动检测并使用系统中最新安装的.NET SDK版本。然而,Unreal Engine 5.4.2自带了一套特定的.NET环境,与最新版的.NET SDK可能存在兼容性问题。

解决方案
要解决这个问题,我们需要配置Rider使用Unreal Engine自带的.NET环境,而不是系统全局安装的最新版本。具体步骤如下:

打开Rider的设置界面
导航到构建、执行、部署 > 工具集 > .NET CLI
在"使用.NET CLI的路径"选项中,手动指定Unreal Engine安装目录下的.NET路径
通常这个路径类似于:[UE安装路径]\Engine\DotNET

技术原理
这个问题的本质是.NET SDK版本冲突。Unreal Engine为了确保构建过程的稳定性,会自带一套经过测试的.NET工具链。当外部工具(如Rider)尝试使用不同版本的.NET SDK时,可能会因为API变更或程序集版本不匹配而导致构建失败。

通过强制Rider使用UE自带的.NET环境,我们确保了构建工具链的一致性,避免了版本兼容性问题。

预防措施
为了避免类似问题,建议开发者:

在开始新项目时,先检查并统一开发环境中各工具的.NET版本
考虑使用虚拟环境或容器技术隔离不同项目的开发环境
记录项目中使用的工具链版本,便于团队协作和环境重建

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions