首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

修改 .NET 运行时、框架和库,从编译 dotnet runtime 仓库开始

.NET 以 MIT 协议开源,于是任何人都可以尝试对其进行一丢丢的修改以实现一些原本很难实现的功能,例如在多个可执行程序(exe)之间共享同一个私有部署的 .NET 运行时。...本文介绍一下如何编译 dotnet/runtime 仓库,日常使用非常简单,所以如果只是轻微修改的话,本文大概就够了。...首先记得先把仓库拉下来: dotnet/runtime: .NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps...mono.corelib+libs.pretest -rc debug -c release For more information, check out https://github.com/dotnet...runtime/blob/main/docs/workflow/README.md 本文会经常更新,请阅读原文: https://blog.walterlv.com/post/how-to-compile-dotnet-runtime

39520

制作的 dotnet tool 运行失败提示依赖缺失

小伙伴做了一个很好用的 dotnet tool 工具,但是这个工具仅在他的设备上能运行,在我的设备上运行就会退出提示 An assembly specified in the application dependencies...manifest (LindexiDoubi.deps.json) was not found 找不到依赖 默认选择 dotnet tool 的 NuGet 包是会带上所有依赖的,和其他的 NuGet...Application: Lindexi.exe Path: C:\Users\linde\.dotnet\tools\Lindexi.exe Message: Error: An assembly...tool 项目的库的 PrivateAssets="all" 就可以 一开始以为是 WPF 项目不支持,实际上 WPF 项目也是可以作为 dotnet tool 包的 ---- 本文会经常更新...,请阅读原文: https://blog.lindexi.com/post/%E5%88%B6%E4%BD%9C%E7%9A%84-dotnet-tool-%E8%BF%90%E8%A1%8C%

90420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    dotnet 为什么开源的运行时仓库代码减少使用 Linq 语句

    在 dotnet 开源的 runtime 运行时仓库里面,有微软的大佬说运行时仓库的代码应该减少使用 Linq 语句,那这又是为什么呢 微软的 Jan Kotas 大佬说了下面这段话,大概意思就是减少在运行时库里减少对...详细还请看 GitHub 的对话 https://github.com/dotnet/runtime/pull/41137#discussion_r474742180 因此在业务层依然可以使用 Linq...的,放心,没有性能问题 只是运行时库想要减少 JIT 创建泛形的类型的时间,因此减少使用而已 当然,本文只是裁几段话,没有很具体上下文含义。...因此还请小伙伴阅读原文 Reduce memory allocations for Process.GetProcessesByName by Serg046 · Pull Request #41137 · dotnet...· Issue #40768 · dotnet/runtime

    56410

    dotnet 6 通过 DOTNET_ROOT 让调起的应用的进程拿到共享的运行时文件夹

    本文告诉大家如何解决调用插件的进程时,赋值给插件进程运行时的文件夹路径,解决环境依赖 我遇到的问题是,如何让调起的插件的进程共用我所在的应用的运行时,而不需要下载插件的时候,另外下载运行时文件 如果插件和我的应用在相同的文件夹下...,那自然没有问题,插件默认就能使用我应用的运行时文件。...如果将运行时所需要的文件也拷贝过去,那就会被用户吐槽我占用了太多 C 盘空间了 一个好的解决方法是通过环境变量的方式,在 dotnet 6 里面,可以通过 DOTNET_ROOT 环境变量,或者 x86...的 DOTNET_ROOT(x86) 环境变量,让应用执行起来时,了解去哪里获取运行时依赖 解决方法是在当前应用进程里设置环境变量,如此通过 Windows 的环境变量机制,由当前应用启动的进程都默认会继承当前应用的环境变量的机制...,可以让被当前应用启动的插件进程拿到环境变量,从而了解需要从哪个文件夹加载运行时 /// /// 加上环境变量,让调用的启动进程也自动能找到运行时

    60910

    dotnet 解决 UNO 在 OpenKylin 麒麟系统运行找不到默认字体启动失败

    本文记录 UNO 应用在 OpenKylin 麒麟系统运行找不到默认字体启动失败的解决方法 本文方法适用于 5.2.161 版本的 UNO 应用,更高版本我没有经过充分测试 在 OpenKylin 系统启动...Avalonia 应用失败,在 FontDetailsCache 的 GetFontInternal 方法里面抛出空异常 核心原因是 UNO 尝试寻找默认的字体,然而找不到 解决方法是手动设置默认字体...Sans CJK SC"; #endif } 此问题已经报告给 UNO 官方,请看 : https://github.com/unoplatform/uno/issues/17287 相关博客: dotnet...解决 Avalonia 在 OpenKylin 麒麟系统运行找不到默认字体启动失败 本文以上代码放在github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行

    13910

    从 Oracle 到 PostgreSQL :从 Uptime 到数据库实例运行时间

    在接触操作系统时,我们常常习惯通过 uptime 来看看系统的启动运行时间,例如: [oracle@zData ~]$uptime17:00:17 up 656 days, 22:18, 4 users...以下的 SQL 查询,通过时间运算得出了数据库的相关运行时间值: SQL> COLUMN STARTED_SINCE format A25SQL> COLUMN UPTIME format A50SQL...这段描述说明 V$TIMER 记录的是厘秒,从 epoch 时间起点量度,这个值来自操作系统,由于在数据库中使用 4 bytes 记录,当主机连续运行大约 497 天之后,这个值会归零重新开始。...某日,同事告诉我一个发现,他说一台数据库的运行时间超过了操作系统的启动时间。...而从操作系统的 uptime 来看,系统不过启动了 306 天: SQL> !

    1.2K20

    从源码深入探究React 运行时优化方案的演进

    上周刚在公司进行了一次 React 运行时优化方案的分享,以下是分享的文字版,文章比较长,干货也很多,相信你看完后会对 React 有不一样的理解。...那么,为什么本篇文章的主题是运行时呢?我们先来看看几大框架在设计上的对比。...,并且通过 diff 算法得出最小的操作行为,这些全部都是在运行时来做的。...所以,我们可以看到 React 几个大版本的的优化主要都在运行时。 那么,运行时我们主要关注什么问题呢?...好,刚才我们聊完了为什么 React 主要的优化策略都在运行时,以及运行时主要解决的问题,下面我们就来具体看一下,React 最近的这几个大的版本都有什么更新和变化。

    47220

    dotnet core 在 MAC 系统下删除应用程序自己后调 Process Start 方法将会抛出 Win32 异常

    用来更新所有的 dotnet tool 工具。...在更新 dotnetCampus.UpdateAllDotNetTools 将会删除当前运行的 dotnetCampus.UpdateAllDotNetTools 进程的文件,在 MAC 下是可以删除正在运行的程序的文件...("dotnet") 那么 .NET 将先尝试在程序所在的文件夹寻找是否存在 “dotnet” 这个程序,如果存在,那么执行。...因此第一步就是获取当前进程所在的文件 在 .NET 开源代码里面,可以在 src\libraries\System.Diagnostics.Process\src\System\Diagnostics\...usesTerminal); // 忽略代码 } 在 ResolvePath 方法将会先尝试获取当前的文件夹,具体的实现将会在 src\libraries\System.Diagnostics.Process

    82730

    如何丝滑般将 Kubernetes 容器运行时从 Docker 切换成 Containerd

    前面我们了解了 containerd 的发展历史和基本使用方式,本节我们就来尝试下使用 containerd 来作为 Kubernetes 集群的容器运行时。...前面我们安装的集群默认使用的是 Docker 作为容器运行时,那么应该如何将容器运行时从 Docker 切换到 containerd 呢?...,可选值为 docker 或者 remote,默认是 docker,由于我们这里使用的是 containerd 这种容器运行时,所以配置为 remote 值(也就是除 docker 之外的容器运行时都应该指定为...,crictl 为 CRI 兼容的容器运行时提供 CLI,这允许 CRI 运行时开发人员在无需设置 Kubernetes 组件的情况下调试他们的运行时。...接下来我们就先简单介绍下如何使用 crictl 工具来提升管理容器运行时的效率。

    4.5K12

    如何丝滑般将 Kubernetes 容器运行时从 Docker 切换成 Containerd

    前面我们了解了 containerd 的发展历史和基本使用方式,本节我们就来尝试下使用 containerd 来作为 Kubernetes 集群的容器运行时。...前面我们安装的集群默认使用的是 Docker 作为容器运行时,那么应该如何将容器运行时从 Docker 切换到 containerd 呢?...,可选值为 docker 或者 remote,默认是 docker,由于我们这里使用的是 containerd 这种容器运行时,所以配置为 remote 值(也就是除 docker 之外的容器运行时都应该指定为...,crictl 为 CRI 兼容的容器运行时提供 CLI,这允许 CRI 运行时开发人员在无需设置 Kubernetes 组件的情况下调试他们的运行时。...接下来我们就先简单介绍下如何使用 crictl 工具来提升管理容器运行时的效率。

    1K30

    深入剖析运行时库配置错误:从静态库到动态库的常见陷阱

    然而,由于编译器运行时库(CRT)的配置差异,从静态库项目切换到动态库项目时,往往会遇到诸如“RuntimeLibrary 不匹配”的错误。...运行时库的基本概念运行时库负责为应用程序提供诸如内存分配、异常处理和输入输出等底层功能。...动态链接(/MD):运行时库以 DLL 的形式存在,程序在运行时动态加载对应的 CRT。这种方式有助于减少最终程序的体积,同时便于维护和升级运行时库。...但当目标项目配置为动态库时,各模块之间对运行时库的依赖必须保持完全一致,否则会引发严重的链接问题和运行时错误。...本文通过一个具体案例详细分析了从静态库项目切换到动态库项目时,由于 /MT 与 /MD 混用引发的链接错误,并给出了以下建议:统一配置:确保所有模块(包括第三方依赖库)均使用相同的运行时库配置。

    11610

    从 QuickJS 到 Dart VM:稿定跨端渲染工程的运行时演化

    后续需要访问 Dart 对象上绑定的 C++ 对象时,从 Dart 侧传入该 ptr 并强转类型即可。 ?...在笔者「写给前端的手动内存管理基础入门(一)[11]」中,也重度应用了这种从类型出发的视角,来帮助前端同学理解原生语言。如果你对 C 系语言还不熟悉,这里推荐一读。...通过建立 Dart_CObject 的方式,可以从任意线程向 Dart Isolate 发送消息。其具体示例可参见 GitHub Issue[13] 讨论。...并且 QuickJS 的 API 非常友好易懂,它的集成为我们培养了从 0 到 1 的入门经验,在项目早期发挥了很大作用。回头看来,这仍然是一条选择从头自研时的必经之路。...最后在开发成本方面,从最早引入 QuickJS 到现在接入 Dart VM,从 C++ 渲染层到 TS 和 Dart 的编辑器框架,我们对整套基础设施的搭建实际上只有两个人全职投入,再加上一位帮助实现业务层需求的校招同学就足够了

    2.5K31

    从微信聊天记录复制粘贴的Linux代码为什么运行失败?

    起因是在最近的一次Jimmy老师给大家的视频号直播中,我们尝试演示了一段代码的运行过程。意外发现,当代码从微信中复制粘贴到终端时,竟然出现了无法运行的情况。...情景再现 起因是需要用到kingfisher下载一个数据集,代码直接从微信检索了相关代码 image.png 直接复制粘贴,运行报错信息如下,仔细有看了下代码,没有问题,这就很诡异。...当从微信这样的应用中复制文本时,可能会无意中复制了这种空白字符,因为它们在微信中可能用于格式化文本但在代码编辑器或命令行环境中通常是不可见的。所以就会出现命令看起来正确,但是却运行不了的情况。...从根源上避免出现这个bug

    41010

    Akka重塑:全新运行时环境将应用程序从基础设施中解放出来

    更新后的解决方案拥有一个新的运行时环境,使应用程序能够管理其底层基础设施,包括计算资源、存储持久性和(也许最重要的是)位置。...除了最近发布的运行时环境外,该平台还包括 SDK 和编程库。 “你一直都可以使用 Akka 的库来构建这些应用程序,”Jewell 说。“但是,你必须自己进行操作。...这意味着你拥有这个应用程序;它在本地运行良好。操作员需要自己弄清楚如何将其扩展并使其适应。现在,我们提供了这个运行时环境,以便应用程序可以拥有一个运行的场所并获得其所需的 SLA。”...其运行时环境通过使使用 Akka 编写的应用程序能够类似于内存、持久性数据库一样工作来将应用程序与其基础设施解耦。 据 Jewell 介绍,此特性意味着应用程序是记录系统,并负责集群和数据分区等操作。...可移植性优势、正常运行时间优势、读取和写入复制数据的灵活性以及应用程序响应能力的赔偿代表了云原生应用程序的重大飞跃。

    8410

    在OpenCloudOS 上安装.NET 6

    在6月份写过一篇文章[1]《在OpenCloudOS使用snap安装.NET 6》,当时 采用yum 和 dnf 两种方式安装都失败了,然后反馈给了社区,最新的版本已经修复了,今天我们就用yum 或者...如果已安装 SDK 或运行时,请使用 dotnet --list-sdks 和 dotnet --list-runtimes 命令查看安装了哪些版本。...若要安装 .NET SDK,请运行以下命令: sudo dnf install dotnet-sdk-6.0 安装运行时 通过 ASP.NET Core 运行时,可以运行使用 .NET 开发且未提供运行时的应用...运行时:将上一命令中的 aspnetcore-runtime-6.0 替换为 dotnet-runtime-6.0: sudo dnf install dotnet-runtime-6.0 如何安装其他版本...有效选项是: dotnet aspnetcore type 选择 SDK 或运行时。 有效选项是: SDK Runtime — 运行时 version 要安装的 SDK 或运行时的版本。

    47320

    记将一个大型客户端应用项目迁移到 dotnet 6 的经验和决策

    于是可以做的事情就更加多了,无法实现的东西就更少了 为了做到对 WPF 更多的定制化,我将 WPF 框架的地位从原先的应用运行时层,更改为基础库层,地位和 团队里面的基础组件 等 CBB 相同,只是作为底层库而存在...,无法使用 dotnet core 环境独立的能力 不能使用 Program File 共享的全局程序集,因为团队内将会对 dotnet 运行时进行定制,例如定制 WPF 程序集,将 WPF 的地位从运行时更改为基础库...意味着私有的版本难以调试,而且也无法在开发时处理私有的版本的行为变更 如果选用私有的版本作为软件运行加载的程序集,那么将因为私有的版本的版本号比开发者的 SDK 版本低,从而让开发者构建出来的程序集找不到对应的版本从而运行失败...,例如定制 WPF 程序集,将 WPF 程序集的地位从运行时修改为基础库。...(x86) 环境变量 详细请看 dotnet 6 通过 DOTNET_ROOT 让调起的应用的进程拿到共享的运行时文件夹 然而此方法也是有明确缺点的,那就是这些插件自身是不能单独运行的,单独运行将找不到运行时从而失败

    1.6K10
    领券