【问题标题】:Compiler refuses to compile after I retarget a .NET 6 project to .NET Framework 4.8将 .NET 6 项目重新定位到 .NET Framework 4.8 后,编译器拒绝编译
【发布时间】:2022-05-21 16:34:23
【问题描述】:

我有一个 .NET 6 项目。我想将其重新定位到 .NET 4.8。我是从项目属性中做到的。我使用更新的语言功能删除了我的代码的所有实例。我也清理了解决方案

但是在编译之后,我在编译时遇到了错误

CS8630 Invalid 'nullable' value: 'Enable' for C# 7.3. Please use language version '8.0' or greater

在第 1 行,来自我的项目文件夹中名为 CSC 的文件(奇怪的是,CSC 是编译器的名称,而我没有这样的文件)。我肯定没有使用可空类型,而且这个错误是不正确的 IMO。我该怎么办?

编辑:@RahulSharma 的回答无效。它不起作用,产生另一个错误。

【问题讨论】:

  • 检查 .csproj 文件本身是否有此设置。
  • 请注意,Rahul 建议的链接显示正确的项目标签在问题中,而不是答案。答案不再正确。这个问题是在 8.0 发布之前提出的。
  • @madreflection 实际上我确实尝试了这个答案,但仍然有一个自动生成的文件正在尝试导入System.Net.Http。我认为真正的问题是更新样式csproj 本身。当编译器看到较新样式的csproj 文件时,它可能假定为C# 8.0。也可能在<Project Sdk="Microsoft.NET.Sdk">的某个地方?
  • 不是。您可以使用新的项目样式定位net48 甚至net20。我一直都这样做。您可能正在处理的事实是 .NET 4.8 没有 .NET 6 的很多东西。您可能需要添加 NuGet 包来获取其中的一些包,而其他包则不能使用,因为它依赖于更新的框架或运行时支持。

标签: c# .net


【解决方案1】:

当您的项目设置引用语言版本 7.3 时会显示此错误。我假设您可以通过右键单击您的项目并在 VS 中选择属性、构建、高级来验证这一点。如果语言版本显示为 7.3,则需要更改它以匹配您使用的框架版本。但是,您无法在 VS 对话框中更改此设置,因此您需要手动执行此操作。 卸载您的项目并将项目文件作为文件打开,然后在<PropertyGroup> 部分添加<LangVersion>latest</LangVersion>。 请参阅每个 .NET 框架版本的语言版本的完整文档here

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-09
    • 1970-01-01
    相关资源
    最近更新 更多