排查.NET Framework目标错误

适用于: Visualstudio

本主题介绍由于引用问题而可能发生的 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。

更新资源

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

将项目重新定位到其他版本的 .NET,并且无法解析引用

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

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

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

<Reference Include="System.ServiceModel" />

注意

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

References