1..NET Core/.NET 开源项目汇总:WPF组件库
2.有哪些好的微软.net的开源项目?
3.微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor
4.利用微软的「GitHub」免费搭建个人博客网站
5.开源项目|高性能内存分配库mimalloc
6.微软推出了新的开源错误发现工具ProjectOneFuzz
.NET Core/.NET 开源项目汇总:WPF组件库
WPF,作为Windows Presentation Foundation,开源是项目微软提供的一个用户界面框架,属于.NET Framework 3.0的源码一部分,旨在提供统一的微软编程模型、语言和框架,开源安卓源码怎么用不了实现界面设计人员与开发人员工作的项目分离,同时提供全新的源码多媒体交互用户图形界面。然而,微软尽管微软提供的开源WPF控件功能强大,但其样式可能并不尽如人意,项目需要专业的源码美工进行设计或定制。因此,微软开源社区中涌现了众多无私奉献的开源大牛分享出既美观又实用的WPF组件库,为开发者提供了丰富的项目选择。以下是几款优秀的开源WPF组件库,供您参考。 一、MaterialDesignInXAML MaterialDesignInXAML是一个完全开源的WPF GUI库,它与MahApps和Dragablz兼容,提供了一套现代流行的设计语言,使得开发人员能够轻松地将美观的桌面应用程序带入生活。该库提供了丰富的组件和功能,包括: 首页:布局简洁、清爽,效果直观。 支持主题风格切换:库内包含数十种颜色风格,满足大部分配色要求,同时支持自定义皮肤。 按钮:提供多种形状的交互按钮,如圆形按钮、图标按钮、按钮进度、按钮文字提示等,使Web中的常见效果在WPF中也能轻松实现。 输入验证框:实现了多种验证器,简化了表单验证的代码,同时提供了友好的界面提示。 标签:控件支持英文Chips,用于显示标签,特别适用于显示大量数据时,可通过点击进行过滤。 卡片:卡片式布局,用于显示数据,提供更生动、友好的展示方式,支持+文字的形式。 图标:提供了成百上千种矢量图标供选择,源码如何打包方便用于菜单图标、按钮图标等。 分组框:类似卡片的组合框,允许自定义Header,并支持添加。 进度条:提供多种样式,适用于不同需求,使得调整进度条各个部分变得简单。 对话框:遮罩式对话框,支持整个窗体遮罩或窗体部分用户控件对话框,实用性高。 抽屉:支持从东、南、西、北四个方向打开抽屉,用于提供额外的功能或内容。 提示信息:提供了一种不弹框的提示方式,用于显示不需要用户操作的即时信息。 二、MahApps.Metro Metro是一个允许开发人员为WPF应用程序设计Metro或现代UI的框架。它重写了所有常见WPF控件的默认样式,提供了现代外观,并包含了一些基于WindowsPhone、Windows8和Windows(UWP)应用程序概念的自定义控件。MahApps.Metro的源代码托管在GitHub上,易于访问和改进。 三、AduSkin AduSkin是一款简单美观的WPF UI库,融合了多个开源框架组件,为个人定制UI提供了丰富选项。它支持动态修改皮肤,提供大量产品示例,供学者参考和使用。AduSkin的官方网站和开源地址均在GitHub上,方便开发者获取和使用。有哪些好的.net的开源项目?
在领域驱动设计(DDD)中,强类型Id的概念尤为重要。使用强类型Id作为标识属性的类型,相较于通用类型如int、Guid等,能带来显著优势。例如,一个根据Id删除用户的方法签名如下:
方法的参数无法明确Id代表的业务含义,若错误地将货物的Id传入,仍能执行。而使用通用类型,则业务属性弱化。kdj量源码自定义UserId类型如下:
这样,User类中Id属性的类型从long变为UserId类型。相应的RemoveById方法签名也调整为:
一眼可识Id参数的业务含义,避免了错误传入不同业务类型Id的问题。
在.NET 6及之前版本,Entity Framework Core(EF Core)难以优雅地支持强类型Id。然而,.NET 7中的EF Core提供了对此的支持,详细信息请参阅官方文档中的“Value generation for DDD guarded types”部分。
尽管EF Core内置了强类型Id支持,但实现需大量代码编写,复杂性高。因此,微软文档警告谨慎使用强类型Id。为简化此过程,我基于.NET的SourceGenerator技术开发了一个开源项目。
此项目在编译时自动生成相关代码,开发人员仅需在实体类上标注[HasStronglyTypedId]即可实现强类型Id。项目地址:github.com/yangzhongke/...
以下是一个将所有代码集成至控制台项目示例,以展示使用方法。更多复杂用法请参照项目文档及Examples文件夹。
注意:项目可能随更新而调整使用方法,请参照最新官方文档。
使用步骤如下:
1. 创建.NET7控制台项目,安装Nuget包LessCode.EFCore、LessCode.EFCore.StronglyTypedIdCommons、LessCode.EFCore.StronglyTypedIdGenerator。同时确保使用SQLServer及EF core迁移,还需安装Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools。
2. 新建实体类型Person,在类上标注[HasStronglyTypedId(typeof(Guid))]启用强类型Id。编译时自动生成名为PersonId的类,声明一个名为Id、类型为PersonId的属性。
默认PersonId在数据库中保存为long类型,若需Guid类型,可标注[HasStronglyTypedId(typeof(Guid))]。
编译项目,检查成功编译后,反编译生成的dll,验证自动生成了PersonId、PersonIdValueConverter两个类。
3. 编写DbContext,实现数据库迁移等操作。
4. 测试代码,验证强类型Id在EFCore中的多开补丁源码应用。
强类型Id优化了EFCore与DDD的结合,简化了代码实现,降低复杂性。通过此开源项目,开发者仅需在实体类上标注一行代码,即可便捷实现强类型Id功能。期待它能为开发者提供帮助,欢迎分享至技术社区。
微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor
微软官方为广大开发者带来了开源且免费的Blazor UI组件库 - Fluent UI Blazor,它为构建现代化Web应用程序提供了强大的支持。
Fluent UI Blazor是一款基于Blazor技术的组件库,集成了Fluent UI的设计风格。它有助于开发者利用C#和Razor语法快速开发出高效、灵活的单页应用程序(SPA),尤其对于C#程序员来说,它简化了Web应用的开发过程,降低了学习成本,提高了开发效率。
通过Blazor的C#编译能力,开发者可以使用C#直接操控HTML DOM,而非JavaScript,实现了更直观的编程体验。要了解更多组件演示和在线使用指南,可访问fluentui-blazor.net。
项目源代码地址包含CheckboxInputFileNumber、fieldRadioDate & TimeButtonDialogWizard等实用组件,你可以亲自探索并参与到项目中,为其发展贡献力量。同时,该项目已被收录到C#/.NET/.NET Core优秀项目精选中,关注这个精选列表,可以随时掌握最新动态和最佳实践,提升开发水平。
优秀项目和框架的发掘和分享是大家共同的责任,如果你发现其他优秀项目,欢迎提交PR,让我们一起为社区贡献更多价值。一起来挖掘和推广这些优秀的项目,共同推动技术进步。
利用微软的「GitHub」免费搭建个人博客网站
搭建个人博客网站,对于新手来说可能是一个挑战,涉及购买服务器、域名、配置环境、选择博客系统等复杂步骤。幸运的是,现在有一种更为简单的程序商城源码方法,即利用微软的GitHub平台免费搭建个人博客。GitHub作为全球最大的代码托管平台,拥有丰富的开源项目,且被微软收购后更为稳定可靠。下面将指导你如何零成本搭建属于自己的博客。
使用GitHub搭建博客步骤如下:
1. 首先,访问github.com注册一个账户。
2. 点击右上角的"+"按钮,选择"New Repository"创建新的仓库。
3. 在Repository name中输入格式为“你的名字. GitHub.io”的仓库地址,然后点击"Creating repository"创建。
4. 创建仓库后,点击右上角的"Settings"进入设置页面。
5. 在设置页面,找到"GitHub Pages",点击"Choose a theme"并选择一个主题。
6. 虽然GitHub提供的主题数量有限,但可以通过后续自定义样式来实现个性化。
7. 设置完成后,GitHub Pages会自动生成网站,通过输入你创建的地址(例如:你的名字.github.io)访问即可。
8. 接下来在GitHub上进行写作和页面管理,支持Markdown语法。为了提供更友好的编辑体验,推荐使用Gridea客户端。
使用Gridea写作:
Gridea是一款基于GitHub Pages的免费开源页面管理工具,支持MacOS、Windows和Linux平台。只需配置GitHub参数即可使用。
在Gridea设置界面输入Token名称,选择"repo"权限,然后点击"Generate token"创建Token。
将生成的Token复制粘贴到Gridea配置界面中。
设置完毕后,检测远程连接。在Gridea中设置主题、网站名称、描述、图标、布局等,通过同步按钮完成设置。
在写作方面,使用Markdown语法。Gridea提供插入、表情、字数统计、文章链接、封面、标签等功能,写完后预览效果,无误后保存并发布。
发布后的效果展示了轻博客的完整界面。可以自定义归档页面、标签页面和个人关于页面。
安装其他主题:
若官方提供的主题不够满意,可以选择第三方主题。在gridea.dev/themes/页面下载所需主题,将下载的主题解压至Gridea的themes文件夹,重启软件。
在Gridea主题设置中选择安装的主题,保存同步完成。
绑定域名:
若觉得默认域名不够个性化,可以购买自定义域名。通过CNAME方式将域名指向GitHub Pages地址,参考设置教程。
在"Settings"页面输入域名地址,如"blog.xiaoyi.vc",保存后等待域名解析生效。
注意事项:
GitHub Pages提供免费服务,但有容量限制(1G)、文件大小限制(M)、每月流量限制(GB),一般情况下足够使用。发布后可能有缓存机制,等待1-5分钟后刷新内容。
总结:
利用GitHub Pages搭建个人博客非常简单,适合记录文字、,无需复杂功能。GitHub的稳定性和免费服务,大大降低了服务器管理的困扰。对于有需求的用户,可以进一步自定义主题,提升个性化体验。
关于加速服务和图床解决方案,后续将提供相关教程,以进一步优化网站访问速度和存储。
开源项目|高性能内存分配库mimalloc
mimalloc
开源内存分配库,微软研究院年发布,旨在提供高性能内存管理解决方案。
使用方法如下:
1. 克隆代码库至本地。
2. 编译代码。
3. 将头文件复制至系统目录,如:
4. 编译项目时链接mimalloc。
尝试直接使用mimalloc,无需编译:
配置环境变量。
mimalloc特点:
1. 简洁高效,核心代码量少于行。
2. 性能显著优于其他内存分配库,如:mi(mimalloc)、tc(tcmalloc)、je(jemalloc)等。
3. 支持多线程。
架构:
mimalloc设计中,每个线程拥有专属堆,线程在分配内存时从各自堆进行。堆中包含多个分段,每个分段对应多个页面,内存分配在页面上进行。
free列表操作代码。
源码实现:
1. malloc函数实现
2. free函数实现
参考资料:
[1] cnblogs.com/linkwk7/p/1...
[2] github.com/microsoft/mi...
[3] cnblogs.com/linkwk7/p/1...
微软推出了新的开源错误发现工具ProjectOneFuzz
今天早些时候,Microsoft 更新了Visual Studio Code的C ++扩展,将其扩展到了1.0版。源代码编辑器是在标准MIT许可下可在GitHub上获得的几种Microsoft产品之一。
今天,该技术巨头已经在相同的许可下发布了一个新的开源工具-OneFuzz项目。该新平台将替代Microsoft已停产的安全风险检测服务,该平台被称为“ Azure的开源自托管开发人员测试平台”。
模糊测试本质上是通过严格的测试过程来消除可利用的安全漏洞,该过程涉及用大量随机数据泛滥相关程序。尽管非常有用,但执行起来也常常很复杂。OneFuzz项目试图利用开源LLVM编译器基础结构项目的最新进展,使模糊测试变得更轻松,更连续。
由于上述进步,以前必须连接到连续构建系统的相关机制现在可以直接烘焙到其中。例如,崩溃检测可以通过asan工具内置,而覆盖范围跟踪可以使用SanitizerCoverage(sancov)工具进行烘焙。展望未来,这些更改将使在单个可执行文件中内置多种模糊测试技术,从而可以开发单元测试二进制文件。
然后,Project OneFuzz允许将这些测试二进制文件构建到CI / CD管道和云中的大规模Fuzz工作流程中。该工具的突出功能包括:
可组合的模糊测试工作流程:开放源代码允许用户使用自己的模糊测试工具,交换仪器和管理种子输入。
内置的集成模糊测试:默认情况下,模糊测试器作为一个团队来共享优势,在模糊测试技术之间交换感兴趣的输入。
程序分类和结果重复数据删除:它提供了始终重复的独特缺陷案例。
按需实时发现已崩溃的调试:它使您可以按需或从构建系统中调用实时调试会话。
可观察和可调试:透明的设计允许自省每个阶段。
Windows和Linux操作系统上的模糊性:设计成多平台。使用您自己的OS构建,内核或嵌套的管理程序进行模糊测试。
崩溃报告通知回调:当前支持Azure DevOps工作项和Microsoft Teams消息
该测试框架已在包括Microsoft Edge和Windows在内的其他Microsoft服务和平台中使用。现在,随着OneFuzz项目的可用性扩展到全世界的开发人员,可以在GitHub上访问它。微软欢迎开源社区的贡献,该公司承诺将来会对该工具进行将来的更新。
前端要凉?微软开源Sketch2Code,草图秒变代码
微软开源了一项名为Sketch2Code的创新项目,旨在通过AI技术将设计师手绘的用户界面草图直接转换为HTML代码,极大地简化了设计与开发过程。这个基于Web的解决方案由微软与Kabel、Spike Techniques合作开发,旨在加速网页和应用的原型制作,减少设计师与开发者之间的沟通成本。
Sketch2Code的工作流程是从设计师的草图开始,AI技术能够准确识别并将其转化为可执行的代码。该项目的开源代码和详细信息可以在github.com/Microsoft/ai...找到,用户可以在微软官方网站sketch2code.azurewebsites.net...上亲身体验其功能。
Sketch2Code的架构设计巧妙地结合了多个组件,包括图像识别、自然语言处理和代码生成模块,共同实现了从草图到代码的高效转换。通过这个工具,用户不再需要花费大量时间将手绘设计手动转码,设计和开发的效率得以大幅提升。
随着AI技术的发展,Sketch2Code展示了人工智能如何助力前端开发,或许预示着前端开发方式的革新。无论你是开发者、设计师还是管理者,都可以关注Sketch2Code,探索如何将这项技术融入到你的工作流程中,提升效率,推动业务发展。
想要了解更多关于AI在各行业的应用和前沿技术动态,不妨关注我们的微信公众号AI前线,获取更多优质内容。同时,别忘了分享你的想法和反馈,共同推动技术的进步。
GitHub 日收 星,Windows 计算器项目开源即爆红!
在开源世界中,一颗璀璨的新星悄然升起——Windows计算器项目在GitHub上一日之间收获了余颗星,引起了业界的广泛关注。这无疑是微软对开源精神的一次有力展示,也验证了他们拥抱开源的决心。 让人意外的是,这次的开源项目并非使用微软自家的C#,而是选择了C++,这个选择一时间成为了热议的话题。Windows 操作系统的内置计算器,以其现代Windows App的形式,集标准型、科学型和程序员计算器功能于一身,还支持单位转换和货币换算,功能强大且实用。 微软官方发布的计算器源代码,不仅包含了基础的运算功能和科学计算器的扩展运算,还为开发者提供了丰富的数学工具。它的代码库不仅可供下载,而且支持用户参与,通过GitHub上的issue跟踪反馈,无论是修复bug还是提出新功能建议,都能看到社区的活跃与热情。 项目启动之初,微软详细列出了开发依赖,包括对Windows 版本的要求、Visual Studio的安装,以及一些额外工具的安装步骤,为开发者提供了清晰的指引。开源后的Windows计算器迅速登上了GitHub的热门趋势榜,同时,随着用户反馈的增多,项目中的问题也引起了有趣且富有挑战性的讨论。 从一个“除以0”的无厘头bug,到计算器界面像素对齐的细节,开发者们在找茬中不断挖掘项目的深度。微软此举,无疑在推动着技术的开放与共享,他们希望通过与社区的互动,共同提升用户体验,同时也为开发者提供了学习和创新的平台,展示了Windows Calculator背后的技术栈,如Universal Windows Platform、XAML和Azure Pipelines。 微软的开源行动并未止步于此,他们从专利开放到代码开源,再到经典的文件管理器重见天日,一系列举措体现了他们对开源理念的坚定支持。而这次的Windows计算器项目,更是预示着更多经典应用的开源可能性,比如呼声颇高的扫雷和纸牌游戏,也许不久之后就将与我们见面。 GitHub地址:/Microsoft/calculator 对于微软的这次开源行动,业界和开发者们无疑看到了一个开放、合作的未来,期待在这一过程中,更多创新和优质软件的诞生。让我们一起期待Windows计算器开源的更多可能性,以及微软开源路上的更多精彩。微软开源Edge浏览器核心部分,开发者会如何利用Chakra?
微软再次开启开源新举措,其Edge浏览器的关键组成部分Chakra即将揭开源代码面纱。Chakra,作为Edge浏览器的JavaScript引擎,负责运行网页中的脚本代码,是IE浏览器“后继者”的重要组件。微软宣布,从下月起,ChakraCore这一源代码将被公布在GitHub上,同时对非自由软件公司开发者开放接纳贡献。
尽管微软并未计划开源整个Edge浏览器,但这一举动预示着ChakraCore将能在更广泛的领域发挥作用,包括游戏、云服务和物联网设备等。JavaScript,最初只是浏览器的专属,但近年来在Node.js的推动下,已在服务器和其他应用中大放异彩。Node.js基于谷歌的V8引擎,而Chakra已经在Xbox和Windows Phone等平台得到应用,微软期望未来能扩展到更多操作系统。
值得注意的是,Node.js目前仅能在Windows系统上利用Chakra而非V8。微软的开源行动旨在增强其技术灵活性,可能通过与Linux发行渠道的整合,为独立开发者提供更多可能性,让他们有机会将ChakraCore嵌入其他平台。此举也将促使竞争对手如苹果、谷歌和Mozilla的开发者借此机会学习和改进自家的JavaScript内核技术。