【发布时间】: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 包来获取其中的一些包,而其他包则不能使用,因为它依赖于更新的框架或运行时支持。