首页
学习
活动
专区
圈层
工具
发布

杂谈 System.Drawing.Common 的跨平台性(关键词:libgdiplus .NET Core Mono Win32 Linux ……)

它从 API 级别就分离出 .NET Framework 中不跨平台的部分,然后把它们从 .NET 的核心仓库中移除,换成 .NET 的扩展框架(如 WPF / Windows Forms)。...关于 TypeForwarding 可以阅读这篇博客了解,微软也有其他通过此方式做的 NuGet 包,可参见 微软官方的 NuGet 包是如何做到同时兼容新旧框架的? - walterlv。...这些指定的依赖,在发布此程序之后会换成真实的依赖,而不再包含多个不同平台下的 dll 了: 1 dotnet publish -c Release -f netcoreapp3.1 -r win10-x64...另外,NuGet 包的 runtimes 文件夹里面包含了前面我们说到的 win 和 unix 不同实现版本的 System.Drawing.Common.dll。...然而 Unity 不能原生支持 NuGet 包,而 System.Drawing.Common 包要能够在编译时自动选择正确的 dll 去引用,是需要 3.4 版本以上的 NuGet 程序来支持的。

3.7K60

从零开始学习 dotnet 编译过程和 Roslyn 源码分析

性能数据 SourceFusion 的其中一个用途是收集原本会通过反射收集的类型信息。...: .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换 - 吕毅 在 Visual Studio 的解决方案资源管理器中隐藏一些文件 - 吕毅 使用链接共享 Visual Studio...基础 项目文件中的已知 NuGet 属性(使用这些属性,创建 NuGet 包就可以不需要 nuspec 文件啦) - 吕毅 可以使用 NuGet 做一些不是传统 dll 引用的功能: Roslyn 通过...NuGet 工具包 - 吕毅 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - 吕毅 在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中 - 吕毅 NuGet...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

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

    从 MCP 到 Agent Skills,AI Ready 的 .NET 10 正当时

    /、assets/ 中的文件 最佳实践: 保持 SKILL.md 在 500 行以内 将详细参考资料移至 references/ 目录 避免深层嵌套的文件引用 三、使用 .NET File-Based...关键特性包括: 单文件即应用:一个 .cs 文件包含完整程序 内联依赖声明:通过特殊注释声明 NuGet 包 直接运行:dotnet file.cs 即可执行 支持发布:可以发布为独立可执行文件或 Native...对开发者的价值 Agent Skills 为开发者带来三大核心价值: 能力复用:一次编写,在 Copilot、Cursor、Claude 等多个 Agent 产品中使用,还可跨团队共享或通过 GitHub...知识沉淀:将团队最佳实践固化为版本化的 Skills,如代码审查规范、部署流程、数据分析模板等,确保工作流程的一致性。...:从个人工具到企业知识库、教育培训、行业解决方案 .NET File-Based Apps 在这个生态中的定位清晰:作为 Agent Skills 脚本的强类型、高性能选择,为开发者提供从原型到生产的无缝体验

    56610

    一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia

    前言 最近发现DotNetGuide技术社区交流群有不少小伙伴在学习Avalonia,今天大姚给大家分享一款开源、免费、美观的 Avalonia UI 原生控件库:Semi Avalonia。...Avalonia项目介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。...这意味着开发人员可以共享他们的UI代码,并在不同的目标平台上保持统一的外观和感觉。...项目源代码 安装使用 安装NuGet包 搜索:Semi Avalonia包进行安装: 引用 Semi Avalonia 的样式文件 NuGet包安装后需要在 Application.axaml 中引用...irihitech.github.io/Semi.Avalonia 优秀项目和框架精选 该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践

    78610

    .NET周刊【11月第2期 2024-11-10】

    泛型通过开放和封闭类型实现代码复用,但开放类型需在JIT编译阶段生成多种本机代码,影响性能。CLR通过共享方法体优化,引用类型实例能共享,而值类型则不行。示例代码验证了引用类型使用同一方法集的观点。...它结合多个OCR引擎,通过机器学习选择最佳识别结果,界面简单,无需手动调整。翻译支持多种语言,适用于Windows 10/11,需Nvidia GPU与DirectX11。...-Ideal库》系列文章和Nuget包形式发布。...文章详细说明了接口的声明与实现,并运用Jimu框架来支持服务。项目包含接口类库Register.IServices和实现类库Register.Services,通过Jimu微服务框架接入。...这些项目已被收录在C#/.NET优秀项目精选中,推动开发者们交流分享最佳实践。DotNetGuide技术社区则为.NET开发者提供资料学习、技术交流和项目推荐的平台。

    73210

    .NET 新标准介绍

    TL;DR 对于跨平台的 .NET 开发者来说,.NET 标准解决了编码共享的问题。.NET 标准带来了所有你所需要的和期待的,跨环境的 APIs:桌面应用,移动应用/游戏和云服务。...还有很多个 .NET 标准的版本,来表示跨当前所有平台的 APIs 的可用性。...你必须添加一个 NuGet 包进来。 对于自包含的并且可以整理成独立包的 APIs 来说,这种策略工作得很好。...PCLs和 .NET 标准之间的主要区别是: 平台搭配。PCLs的一个挑战是,当你目标是多个平台时,它仍然是一组特殊集合。对于 NuGet 包,可以确认的是,你必须列出库文件名中的平台。...总结 我们已经创建了 .NET 标准,以便使得多个 .NET 平台之间代码的共享和复用变得更加容易。 在 .NET 2.0 标准中,我们更关注于兼容性。

    1.5K80

    在制作跨平台的 NuGet 工具包时,如何将工具(exedll)的所有依赖一并放入包中

    在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中 2018-07-03 13:30 NuGet 提供了工具类型的包支持...但是,默认情况下,NuGet 不会将这些工具的依赖一起打包进入 NuGet 包 nupkg 文件内,这就使得功能比较复杂的跨平台 NuGet 工具包几乎是无法正常工作的。...典型的例子,我正在做一个基于 Roslyn 的 NuGet 工具包。于是整个 Roslyn 的大量 dll 都是我的依赖。但默认情况下,打出来的包并不包含 Roslyn 相关的 dll。...这两个属性决定了我们打出来的包的类型(是否是工具类型)。...然后,我们就可以把输出目录中除了 NuGet 自然而然会帮我们打入 NuGet 包中的所有文件都加入到 NuGet 包中的对应目录下。 具体来说,是将下面的 Target 添加到项目文件的末尾。

    4K30

    .NET 简介

    Windows 平台 (UWP) 游戏 物联网 (IoT) 机器学习 控制台应用程序 视窗服务 使用类库在不同的应用程序和应用程序类型之间共享功能。...NuGet 包是一个.zip文件,其.nupkg扩展名包含已编译的代码 (DLL)、与该代码相关的其他文件,以及包含包版本号等信息的描述性清单。...具有共享代码的开发人员创建包并将它们发布到nuget.org或私有主机。想要使用共享代码的开发人员将一个包添加到他们的项目中,然后可以在他们的项目代码中调用该包公开的 API。...可执行文件是特定于平台的,但依赖于框架的应用程序的.dll文件是跨平台的。 您可以并排安装多个版本的运行时,以运行面向不同版本的运行时的依赖于框架的应用程序。有关更多信息,请参阅目标框架。...运行时库的扩展 一些常用应用程序功能的库不包含在运行时库中,但在 NuGet 包中可用,例如: 运行时库的扩展 NuGet 包 文档 Microsoft.Extensions.Hosting 应用生命周期管理

    2.9K20

    解读 Microsoft.NET.Sdk 的源码,你能定制各种奇怪而富有创意的编译过程

    Please select yours: 中文 English Microsoft.NET.Sdk 源码的位置 在计算机上全局搜索 Microsoft.NET.Sdk 可以找到不同版本的多个 Sdk...▲ 我计算机上的 Sdk 文件夹 Sdk 中的 NuGet 部分在 GitHub 上的仓库地址: NuGet.Client/src/NuGet.Core at dev · NuGet/NuGet.Client...关于 NuGet 包的目录结构,我在下面两篇文章中都有提到过: 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 官方对...不过,Sdk 类型的 NuGet 包会多一个 Sdk 文件夹。 ?...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

    1.6K30

    OpenCV4 CSharp从入门到实战课

    C#凭借其优雅的语法、强大的.NET生态系统和出色的开发效率,在企业应用开发中占据重要地位。通过Emgu CV等封装库,C#开发者可以无缝地调用OpenCV的功能,同时享受C#语言带来的开发便利。...OpenCV4为C#开发者带来的主要优势包括:跨平台能力:支持Windows、Linux、macOS等多种操作系统丰富的算法库:包含超过2500种优化算法多语言接口:除了C++原生接口外,还支持Python...等必要包环境变量设置:确保OpenCV的DLL文件路径被正确添加到系统环境变量中验证安装:创建一个简单的控制台应用,尝试加载并显示一张图片以验证安装是否成功相比C++版本的OpenCV,C#配置过程更加简洁...,这得益于NuGet包管理器的便利性。...增强现实应用结合Unity等引擎,OpenCV可以实现:标记物识别与跟踪手势识别虚实融合3D场景重建六、OpenCV4开发最佳实践为了确保OpenCV4项目的成功,遵循一些最佳实践非常重要。1.

    50710

    .NET 体系概览图集- 2024 最全总结

    CTS 规范规定,一个类型可以包含零个或多个成员。这些成员包括:字段(Field)、属性(Property)、方法(Method)、事件(Event)。...基础类库BCL(Base Class Library)是FCL的一个子集,顾名思义就是一些比较基础、通用的类库,如基本数据类型、集合、线程、安全、字符串操作、网络操作、IO、XML操作等等,大多都包含在...其他一些常用的名词,如核心 .NET 库、框架库、运行时库、共享框架,大多都指的是BCL。...DLL:Dynamic Link Library,动态链接库,包含了已编译的C#代码、元数据和资源,可以在多个应用程序之间共享和重用。...、 .NET、Mono间共享代码,提高 .NET 生态系统中的一致性。

    3K11

    MSBuildRoslyn 和 NuGet 的 100 个坑

    MSBuild 不愧是强大的编译器,它提供的扩展机制让你几乎可以编译任何类型的文件或项目;Roslyn 是全新编写的一套编译器,不过它保留了 MSBuild 的大部分机制;NuGet 是 .NET 生态系统中的包管理机制...Task 的跨平台的 NuGet 工具包 创建基于命令行工具的跨平台的 NuGet 工具包 当然还有更多,可以访问 https://walterlv.github.io/categories#nuget...100 个坑 不可用的源 NuGet 可以指定多个包源。既可以在 Visual Studio 中配置,也可以在配置文件中配置。 的项目会自动转为依赖的 NuGet 包 如果你给一个项目 A 打 NuGet 包,但这个项目引用此解决方案中的另一个项目 B。那么这时打包,NuGet 会认为 A 包依赖于 B 包。...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

    99730

    发布基于Orchard Core的友浩达科技官网

    构建的可扩展与模块化设计的开源CMS系统,全部代码在GitHub上已开源,其中使用了很多框架和最佳实战,它的架构设计值学习 。...NuGet 即是包管理工具,也是官方的软件包仓库(https://www.nuget.org )。...你可以在网页上检索 NuGet 软件包,并在自己的机器上使用终端(或者 Visual Studio 里的图形界面)安装它们 NuGet包命令 目前预览版需加 -Pre Install-Package OrchardCore.Application.Cms.Targets...自定义模块中添加数据库CURD操作 根据Github上的issues#2248 1.新建Index类引用YesSql.Indexes命名空间,继承MapIndex类 此Index包含实体中部分字段,亦可全部一致...需要安装nuget包OrchardCore.Data.Abstractions。 6.添加Create方法 注意名称必须是Create,返回类型为Int 在Create方法中创建表 ?

    3.8K40

    编写你的专属 MSBuild C# 代码生成器:在保存文件时自动实时生成你的代码

    我之前的博客中有介绍如何在项目中生成额外的代码,也有介绍制作一个生成代码的 NuGet 包。...但如果希望完整了解基于 MSBuild 生成代码的原理,你可以需要了解以下知识或教程: 理解 C# 项目 csproj 文件格式的本质和编译流程 如何创建一个基于命令行工具的跨平台的 NuGet 工具包...如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 准备项目 我们创建一个全新的项目,用来了解如何实时生成代码。...不过,你可以从我的其他博客里找到很多生成代码的方法,比如这篇……还有这篇……还有这这这篇…… 生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型 如何创建一个基于命令行工具的跨平台的...NuGet 工具包 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包 将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样 Roslyn

    1.4K10

    .NET 6 的 NuGet 包验证

    一、前言NuGet 是 .NET 开发中不可或缺的包管理工具。它简化了依赖包的管理与发布,特别是大型项目中。随着依赖包的增多,包的安全性、版本兼容性等问题日益重要,因此验证 NuGet 包至关重要。...示例 3:使用 GitHub Actions 验证特定依赖包的版本和签名。五、跨平台兼容性的验证Linux 和 Windows 环境中的差异。...如何为 .NET Core 项目验证跨平台兼容的 NuGet 包。使用 Docker 或者 WSL 测试依赖包的兼容性。...六、验证自动化与 DevOps 集成如何将 NuGet 包验证集成到 CI/CD 流程中,实现从代码到部署的全链条验证。...使用 Azure DevOps、GitLab CI 和 Jenkins 的实现步骤。七、常见问题与最佳实践处理未签名或无安全来源的依赖包。在项目中指定特定的包版本控制,以减少版本冲突。

    4.8K10

    .NET周刊【5月第3期 2024-05-19】

    AutoMapper 是一个.NET 对象映射库,它的安装方法是通过 NuGet 包。你需要创建源对象和目标对象,并在映射配置文件中定义它们之间的映射规则。...它具有自动解析数据帧、防粘包等特征。相关源码托管于 GitHub,并被 C#/.NET/.NET Core 优秀项目和框架精选收录,有助于开发者了解最新动态和最佳实践。...Mono 框架是跨平台的,支持 Linux、macOS、Windows 等操作系统,包含 C#编译器、.NET 运行环境和类库。...,内容涉及多线程应用程序常见问题的解决方法、线程同步组件及原理,以及多线程环境下的最佳实践。...模块对应于源文件,包含类型、IL 和元数据。类型是包含字段、属性、方法等的代码结构。程序集包含模块,模块包含类型,类型属于单个模块。这些元素共同构成完整的.NET 应用程序。

    2.4K00
    领券