.NET Framework 目标错误疑难解答

适用于: Visual Studio

本主题介绍 由于引用问题以及如何解决这些错误而可能发生的 MSBuild 错误。

引用面向不同 .NET 版本的项目或程序集

你可以创建一些应用程序,用来引用面向不同版本的 .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

如果你为应用程序更改 .NET 的目标版本,Visual Studio 将更改某些引用,但你可能需要手动更新一些引用。 例如,如果将应用程序更改为面向 .NET Core 3.1,并且该应用程序具有依赖于 .NET 6 的引用、资源或设置,则可能出现先前提到的错误之一。

显示更改 Visual Studio 中目标框架的屏幕截图。

更新 app.config 中的引用

若要解决 .NET Framework 应用程序中的应用程序设置,请执行以下步骤:

  1. 打开“解决方案资源管理器”。
  2. 选择“ 显示所有文件”,然后在 Visual Studio 的 XML 编辑器中编辑 app.config 文件。
  3. 在设置中更改版本,以匹配相应版本的 .NET。 例如,可以将版本设置从 4.0.0.0 更改为 2.0.0.0。

同样,对于已添加资源的应用程序,请执行以下步骤:

  1. 打开“解决方案资源管理器”。
  2. 选择“ 显示所有文件”。
  3. 展开 “我的项目 ”(Visual Basic)或 “属性 ”(C#),然后在 Visual Studio 的 XML 编辑器中编辑 Resources.resx 文件。
  4. 将版本设置从 4.0.0.0 更改为 2.0.0.0。

更新资源

如果应用程序具有图标、位图或设置等资源(如数据连接字符串),则还可以通过删除项目设计器的“设置”页上的所有项,然后读取所需的设置来解决此错误。

将项目重新定位到不同版本的 .NET,并且不会解析引用

如果将项目重新定位到其他版本的 .NET,则在某些情况下,引用可能无法正确解析。 对程序集的显式完全限定引用通常会导致此问题,但可以通过删除不解析的引用并将其添加回项目来解决该问题。 作为替代方法,可以编辑项目文件以替换引用。 首先,删除以下表单的引用:

<Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />

然后,用简单形式替换它们:

<Reference Include="System.ServiceModel" />

注意

关闭并重新打开项目后,还应重新生成该项目以确保所有引用正确解析。

参考