• ASP.NET Core使用记录3


    解决Visual Studio报错 NETSDK1152: 找到了多个具有相同相对路径的发布输出文件

    原因:
    是项目多层引用(a引用了b、c,d引用了a、b、c),且被引用的项目生成了xml文件,发布时导致xml文件重复 ,但.net 6.0下会触发报错。
    解决:

    1. 被引用项目不要生成xml文件【根本原因】;
    2. 发布时,将C:\Program Files\dotnet\sdk\6.x的sdk移出C:\Program Files\dotnet目录;
    3. 将C:\Program Files\dotnet\sdk\6.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets下<NETSdkError Condition="‘$(_ResolvedFileToPublishContainsDuplicates)’ == ‘true’"设为false;
    4. 在需要发布项目的csproj里新增false;

    4种均可。

    托管代码和非托管代码

    托管代码

    托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行。编译器把代码编译成中间语言,当方法被调用时,CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用。随着程序集的运行,CLR提供各种服务:内存管理,安全管理,线程管理,垃圾回收,类型检查等等。

    非托管代码

    非托管代码,直接编译成目标计算机码,在公共语言运行库环境的外部,由操作系统直接执行的代码,代码必须自己提供垃圾回收,类型检查,安全支持等服务。如需要内存管理等服务,必须显示调用操作系统的接口,通常调用Windows SDK所提供的API来实现内存管理。

    区别

    1、托管代码是一种中间语言,运行在CLR上;非托管代码被编译为机器码,运行在机器上。
    2、托管代码独立于平台和语言,能更好的实现不同语言平台之间的兼容;非托管代码依赖于平台和语言。
    3、托管代码可享受CLR提供的服务(如安全检测、垃圾回收等),不需要自己完成这些操作;非托管代码需要自己提供安全检测、垃圾回收等操作。

  • 相关阅读:
    HTML+CSS
    【Linux】生产者消费者模型
    【WLAN】Android 13 p2p / wifi direct介绍
    element ui的动态校验的写法(变量动态校验,动态提示信息)与注意事项
    个人服务器到期,项目下线,新的开始
    MATLAB数据导出
    Win11系统怎么限制后台下载更新的速度?
    Using Definition View 使用定义视图
    【LeetCode】寻找两个正序数组的中位数 [H](二分法)
    Unity 3D 2022.1 AND UnityHub 3.2 Patch
  • 原文地址:https://blog.csdn.net/weixin_46178278/article/details/125584757