.net c# 目标框架.NET Standard2.1
有大量的代码提示缺少System.Private.CoreLib.dll
但是如果我引用了这个System.Private.CoreLib.dll, 整个项目就没法用System.Object,System.String
比如提示
错误 CS0518 预定义类型“System.Object”未定义或导入
预定义类型“System.Void”未定义或导入
没有删其他的using 是System.Private.CoreLib.dll里面也有System.String,
导致System.String 存在两个DLL里
好像要用别名,但是试了一下没成功
可能你弄混了不同版本的System.Private.CoreLib.dll
仅供参考:
date time size fullpath
2017-04-11 19:49:36 2323672 C:\Users\Administrator\.nuget\packages\runtime.win7-x64.microsoft.netcore.runtime.coreclr\1.0.7\runtimes\win7-x64\lib\netstandard1.0\System.Private.CoreLib.dll
2022-03-18 16:01:34 2397648 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\CoreCon\Binaries\Phone Tools\Debugger\CoreClr\x64\System.Private.CoreLib.dll
2021-12-10 11:19:53 8579976 C:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-1.7.1\debugAdapters\bin\System.Private.CoreLib.dll
2022-04-14 01:38:24 8581544 C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\5.0.17\System.Private.CoreLib.dll
2022-01-21 15:09:56 8744528 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\Microsoft\LiveShare\Agent\System.Private.CoreLib.dll
2022-11-09 19:36:46 8748960 C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\3.1.32\System.Private.CoreLib.dll
2020-10-19 19:10:06 9389960 D:\dnSpy-net-win64\bin\System.Private.CoreLib.dll
2022-04-14 01:43:02 9395632 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\5.0.17\System.Private.CoreLib.dll
2021-06-21 13:21:32 9558920 D:\detect_old\soft\netcoreapp3.1\publish\System.Private.CoreLib.dll
2021-09-21 01:31:50 9559936 C:\Users\Administrator\.nuget\packages\microsoft.netcore.app.runtime.win-x64\3.1.20\runtimes\win-x64\native\System.Private.CoreLib.dll
2021-11-19 08:55:44 9559944 C:\Users\Administrator\.nuget\packages\microsoft.netcore.app.runtime.win-x64\3.1.22\runtimes\win-x64\native\System.Private.CoreLib.dll
2021-10-15 02:54:26 9559952 C:\Users\Administrator\.nuget\packages\microsoft.netcore.app.runtime.win-x64\3.1.21\runtimes\win-x64\native\System.Private.CoreLib.dll
2022-02-17 06:14:08 9560448 C:\Users\Administrator\.nuget\packages\microsoft.netcore.app.runtime.win-x64\3.1.23\runtimes\win-x64\native\System.Private.CoreLib.dll
2022-03-15 03:56:34 9561488 C:\Users\Administrator\.nuget\packages\microsoft.netcore.app.runtime.win-x64\3.1.24\runtimes\win-x64\native\System.Private.CoreLib.dll
2022-11-09 19:41:02 9561536 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.32\System.Private.CoreLib.dll
2023-01-25 01:30:38 9992840 C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\6.0.14\System.Private.CoreLib.dll
2022-03-28 20:03:10 9994384 C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\6.0.4\System.Private.CoreLib.dll
2022-10-24 23:52:20 9995392 C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\6.0.11\System.Private.CoreLib.dll
2023-01-25 01:29:18 10626736 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.14\System.Private.CoreLib.dll
2022-10-24 23:50:58 10630312 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.11\System.Private.CoreLib.dll
2022-07-22 14:46:18 10630792 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.8\System.Private.CoreLib.dll
2022-03-28 20:02:20 10631320 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.4\System.Private.CoreLib.dll
2023-01-20 20:13:02 10987688 C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\7.0.3\System.Private.CoreLib.dll
2023-01-20 20:13:14 11651240 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\7.0.3\System.Private.CoreLib.dll
2021-08-11 23:05:30 13026168 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.30\System.Private.CoreLib.dll
2020-07-31 04:17:36 13026184 C:\Users\Administrator\.nuget\packages\runtime.win-x64.microsoft.netcore.app\2.1.21\runtimes\win-x64\native\System.Private.CoreLib.dll
2021-04-16 01:40:00 13026192 C:\Users\Administrator\.nuget\packages\runtime.win-x64.microsoft.netcore.app\2.1.28\runtimes\win-x64\native\System.Private.CoreLib.dll
2019-04-17 16:54:36 13033008 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.11\System.Private.CoreLib.dll
IL_0045: call int32 [netstandard]System.Convert::ToInt32(float64)
改为
IL_0045: Ldc_I4 100
结账吧
???你把 using System; 删掉了?
一个程序可以有多个 using 的,他们又不干扰彼此
你添加一个using的时候不要删掉另一个using
此题有酬金,我干脆改中间语言的il文件算了
.method public hidebysig specialname instance int32
get_SubExpiryDays() cil managed
{
// 代码大小 75 (0x4b)
.maxstack 2
.locals init (valuetype [netstandard]System.TimeSpan V_0)
IL_0000: ldarg.0
IL_0001: call instance valuetype [netstandard]System.DateTime APIPlayer.Common.Models.UserProfileModel::get_SubExpiry()
IL_0006: call valuetype [netstandard]System.DateTime [netstandard]System.DateTime::get_UtcNow()
IL_000b: call valuetype [netstandard]System.TimeSpan [netstandard]System.DateTime::op_Subtraction(valuetype [netstandard]System.DateTime,
valuetype [netstandard]System.DateTime)
IL_0010: stloc.0
IL_0011: ldloca.s V_0
IL_0013: call instance float64 [netstandard]System.TimeSpan::get_TotalMilliseconds()
IL_0018: ldc.r8 1000.
IL_0021: div
IL_0022: ldc.r8 60.
IL_002b: div
IL_002c: ldc.r8 60.
IL_0035: div
IL_0036: ldc.r8 24.
IL_003f: div
IL_0040: call float64 [netstandard]System.Math::Ceiling(float64)
IL_0045: call int32 [netstandard]System.Convert::ToInt32(float64)
IL_004a: ret
} // end of method UserProfileModel::get_SubExpiryDays
谁能告诉我这个get_SubExpiryDays()让他固定返回100,就结账,谢谢
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,需要了解一下 System.Private.CoreLib.dll
是什么。它是 .NET Core 运行时的核心库,提供了一些最基本的类型和函数,如 System.Object
、System.String
等等。在 .NET Standard2.1 中,默认情况下会引入 System.Private.CoreLib.dll
,因为它是 .NET Core 运行时的一部分。
如果你的项目提示缺少 System.Private.CoreLib.dll
,可以尝试在项目文件中添加以下内容:
<PropertyGroup>
<NoWarn>$(NoWarn);NU1701</NoWarn>
</PropertyGroup>
这个设置会禁用 CS1701 错误提示,这个错误是因为某些引用的程序集(如 System.Private.CoreLib.dll
)与当前目标框架不兼容导致的。禁用这个错误提示后,项目会继续编译,但是在调用某些不兼容的函数时可能会出现运行时错误。
如果你已经手动添加了 System.Private.CoreLib.dll
的引用,并且出现了 CS0518 错误提示,可能是因为你的应用程序集和核心库程序集(即 System.Private.CoreLib.dll
)中的类型冲突了。这种情况下,可以使用别名来让编译器区分两个版本的类型。例如:
extern alias CoreLib;
// 使用核心库中的 System.String 类型
CoreLib::System.String str = "Hello, world!";
这样就可以在同一个文件中使用两个版本的 System.String
类型了。不过,需要注意的是,别名只是让编译器识别不同的类型,但是在运行时还是只有一个版本的类型。如果两个版本的类型有不同的实现,可能会出现一些奇怪的行为,所以建议尽量避免这种情况。
总的来说,建议不要手动引用 System.Private.CoreLib.dll
,让 .NET Standard2.1 框架自动引用即可。如果出现了 CS1701 错误提示,可以添加上面提到的项目设置来禁用错误提示。如果仍然遇到问题,可以考虑升级 .NET Core 运行时和开发工具,以保证你使用的所有程序集都是兼容的。
如果我的回答解决了您的问题,请采纳!