培训
学习路径
.NET 是一个免费的跨平台开源开发人员平台,用于生成许多不同类型的应用程序。 凭借 .NET,可以使用多种语言、编辑器和库来生成 Web、移动应用、桌面应用、游戏和 IoT 应用。
适用于: Visual Studio
本主题介绍 由于引用问题以及如何解决这些错误而可能发生的 MSBuild 错误。
你可以创建一些应用程序,用来引用面向不同版本的 .NET 的项目或程序集。 例如,可以创建一个面向 .NET 6 但引用一个面向 .NET Core 3.1 的程序集的应用程序。 但是,不能在面向早期版本的 .NET 的项目或程序集中将引用设置为面向 .NET 6 的项目或程序集。 以下是在这种情况下可能会看到的错误示例:
error NU1201: Project ClassLibrary-NET6 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project ClassLibrary-NET6 supports: net6.0 (.NETCoreApp,Version=v6.0)
2>Done building project "ClassLibrary-NET31.csproj" -- FAILED.
要解决此错误,请确保应用程序面向的 .NET 版本与该应用程序引用的项目或程序集所面向的版本兼容。
如果你为应用程序更改 .NET 的目标版本,Visual Studio 将更改某些引用,但你可能需要手动更新一些引用。 例如,如果将应用程序更改为面向 .NET Core 3.1,并且该应用程序具有依赖于 .NET 6 的引用、资源或设置,则可能出现先前提到的错误之一。
若要解决 .NET Framework 应用程序中的应用程序设置,请执行以下步骤:
同样,对于已添加资源的应用程序,请执行以下步骤:
如果应用程序具有图标、位图或设置等资源(如数据连接字符串),则还可以通过删除项目设计器的“设置”页上的所有项,然后读取所需的设置来解决此错误。
如果将项目重新定位到其他版本的 .NET,则在某些情况下,引用可能无法正确解析。 对程序集的显式完全限定引用通常会导致此问题,但可以通过删除不解析的引用并将其添加回项目来解决该问题。 作为替代方法,可以编辑项目文件以替换引用。 首先,删除以下表单的引用:
<Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
然后,用简单形式替换它们:
<Reference Include="System.ServiceModel" />
备注
关闭并重新打开项目后,还应重新生成该项目以确保所有引用正确解析。
培训
学习路径
.NET 是一个免费的跨平台开源开发人员平台,用于生成许多不同类型的应用程序。 凭借 .NET,可以使用多种语言、编辑器和库来生成 Web、移动应用、桌面应用、游戏和 IoT 应用。
文档
指定目标 .NET Framework - Visual Studio (Windows)
指定希望项目所面向的 .NET Framework 版本,使应用程序只能使用指定版本中提供的功能。
MSB3644:找不到“version”的引用程序集。 - MSBuild
找不到“version”的引用程序集。 要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或重定应用程序目标。 你可以在“https://aka.ms/msbuild/developerpacks”中下载 .NET Framework 开发人员工具包。
无法解析主引用“name”,因为它是针对“version”框架构建的。 这是比当前目标框架“version”更高的版本