110来电 2023-03-10 03:16 采纳率: 0%
浏览 984
已结题

关于#.net# System.Private.CoreLib.dll的问题,请问如何解决?

.net c# 目标框架.NET Standard2.1
有大量的代码提示缺少System.Private.CoreLib.dll

img

但是如果我引用了这个System.Private.CoreLib.dll, 整个项目就没法用System.Object,System.String
比如提示
错误 CS0518 预定义类型“System.Object”未定义或导入
预定义类型“System.Void”未定义或导入

img


没有删其他的using 是System.Private.CoreLib.dll里面也有System.String,
导致System.String 存在两个DLL里
好像要用别名,但是试了一下没成功

img

  • 写回答

5条回答 默认 最新

  • 赵4老师 2023-03-10 03:32
    关注
    获得3.45元问题酬金

    可能你弄混了不同版本的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

    结账吧

    展开全部

    评论 编辑记录
  • 文盲老顾 WEB应用领新星创作者 2023-03-10 03:28
    关注

    ???你把 using System; 删掉了?

    一个程序可以有多个 using 的,他们又不干扰彼此

    评论
    110来电 2023-03-10 05:03

    System.Private.CoreLib.dll里面也有System
    冲突了

    img

    回复
  • 於黾 2023-03-10 03:33
    关注
    获得3.90元问题酬金

    你添加一个using的时候不要删掉另一个using

    评论
  • 110来电 2023-03-10 05:04
    关注

    此题有酬金,我干脆改中间语言的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,就结账,谢谢

    评论 编辑记录
  • 极客智能体-在线 2023-03-10 09:31
    关注

    以下答案由GPT-3.5大模型与博主波罗歌共同编写:
    首先,需要了解一下 System.Private.CoreLib.dll 是什么。它是 .NET Core 运行时的核心库,提供了一些最基本的类型和函数,如 System.ObjectSystem.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 运行时和开发工具,以保证你使用的所有程序集都是兼容的。
    如果我的回答解决了您的问题,请采纳!

    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 修改了问题 3月10日
  • 赞助了问题酬金15元 3月10日
  • 创建了问题 3月10日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部