nuget

C# dotnet TypeForwarding 的用法

▼魔方 西西 提交于 2020-08-06 12:00:16
在 CLR 中提供这样的支持,某个类从程序集 A 放到了程序集 B 里面,可以通过一些黑科技让类型就像原本就在程序集 A 一样。用这个方法可以比较好的解决兼容性的问题 例如我写了一个程序集 A 里面有一个 Foo 类,后续我发现这个类其实应该放在程序集 B 里面 如果我直接移动到程序集 B 里面,那么将会让原本在程序集 A 里面寻找的代码跑不过。例如有很多项目都是引用 A 程序集而不知道存在 B 程序集,而一次性更改这么多项目也不靠谱 一个解决方法是将类型从程序集 A 放到程序集 B 里面,但是注意命名空间和类名等都需要保持相同。然后通过在程序集 A 里面添加 TypeForwarding 特定,然后将程序集 A 引用程序集 B 这样就能做到让原本引用程序集 A 的项目依然能从程序集 A 里面找到类型 // 程序集 A 将原本代码去掉,替换为 TypeForwardedTo 引用程序集 B 相同命名空间的类 [assembly:TypeForwardedTo(typeof(Xx.Foo))] // namespace Xx // { // public class Foo // { // } // } 而根据 NuGet 的做法,高版本可以覆盖低版本,也就是我在很多项目里面虽然引用的是旧版本的 A 程序集,但是在入口项目,也就是最终输出的项目里面是引用了最新版本的 A 程序集

.net core redis 驱动推荐,为什么不使用 StackExchange.Redis

两盒软妹~` 提交于 2020-08-06 09:48:45
前言 本人从事 .netcore 转型已两年有余,对 .net core 颇有好感,这一切得益于优秀的语法、框架设计。 2006年开始使用 .net 2.0,从 asp.net 到 winform 到 winservice 等等领域开发都些许涉猎。对.net和大多数同胞有着类似的感触,那是又爱又恨,波段大致是这样: 2010年以前,坚信 .net framework 能一统江湖霸业,不料在此之后,国内使用 .net 各大型领军公司纷纷转型 java,在每次面试和技术口舌之战时总有低人一等的感觉,没有自信。默默的忧桑。。。 于是在2015年底,本人开始接触 linux,学习并使用了第一个跨平台服务端 web 语言 nodejs + express 框架,在完成开发交付时,发现脚本有很多致命问题,最严重那就是维护成本。 经历这一次的项目开发,对软件工程学以及静态语言优点有了更深的体会,在同事推荐和劝导之下,开始学习了 .net core 1.0,看到第一个demo时,发现框架设计与 expressjs 实在太像了,够开放。。我喜欢。。遂一直坚持学习与使用到今天。 遇到的坑 两年时间开发了10+个中大型项目,印象最深刻的是第一个上线项目,一直报 StatckExchange.Redis Timeout 的 bug,当时资料非常少,google 各种姿势都试了(ThreadPool

修改Nuget包默认存放路径

僤鯓⒐⒋嵵緔 提交于 2020-08-06 08:19:39
原文: 修改Nuget包默认存放路径 默认情况下所有的Nuget包都会下载到C盘,目前我这边有几十个G的大小,这导致我C盘的容量越来越小... 我们可以在Nuget.config中修改package存放路径,Nuget.config 在 C:\Users\{UserName}\AppData\Roaming\NuGet 目录下 默认如下所示 <? xml version= "1.0" encoding= "utf-8" ?> < configuration > < packageSources > < add key = "nuget.org" value = "https://api.nuget.org/v3/index.json" protocolVersion = "3" /> </ packageSources > </ configuration > 我们将其修改一下 <? xml version= "1.0" encoding= "utf-8" ?> < configuration > < packageSources > < add key = "nuget.org" value = "https://api.nuget.org/v3/index.json" protocolVersion = "3" /> </ packageSources > < config >

Where is nuget.exe?

孤人 提交于 2020-08-06 07:24:29
问题 I'm using Visual Studo 2015 and I have Package Manager Console where I can run like PM> Install-Package Newtonsoft.Json Visual Studio seems to come with nuget, but what is the location of nuget.exe? Or Package Manager Console doesn't use nuget.exe? 回答1: Visual Studio 2015 uses various NuGet assemblies but it does not itself include NuGet.exe. NuGet.exe can be downloaded from the NuGet web site: https://www.nuget.org/downloads 回答2: If you are looking for nuget.exe (to run it from command line)

.NET Core 事件总线,分布式事务解决方案:CAP

孤街醉人 提交于 2020-08-06 07:19:17
背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景下诞生的。 最初打算做这个东西是在去年(2016)年底,最初是为了解决分布式系统中的分布式事务的问题,然后当时有了一个大概的概念轮廓,当时我对于前面两篇文章中关于异步消息和微服务之间通讯还不是太了解,只是觉得这样能够解决这一系列的问题,然后就着手做了,最后发现和这些概念竟然不谋而合。 经过大半年的不断重构以及修改,最终 CAP 1.0 版本发布了。作为一个开源项目,最初项目是在我的个人Github下,然后于上个月已经贡献给了 .NET China Foundation 组织,目前该项目由我和 DotNetCore 项目组共同维护。 CAP 介绍 Github: https://github.com/dotnetcore/CAP 开源协议:MIT CAP 是一个在分布式系统中(SOA,MicroService)实现事件总线及最终一致性(分布式事务)的一个开源的 C# 库,她具有轻量级,高性能,易使用等特点。 你可以轻松的在基于 .NET Core 技术的分布式系统中引入CAP,包括但限于 ASP.NET Core 和 ASP.NET Core on .NET Framework。 CAP

C#桌面开发的未来WebWindow

独自空忆成欢 提交于 2020-08-06 06:29:00
目录 WebWindow 源码 作者博客 基于Chromium的Edge 体验 体验方式一: 体验方式二: 预期目标: 遗留的问题 WebWindow WebWindow是跨平台的库。 Web Window的当前实验实现可在以下平台上运行: Windows – 需要基于Chromium的Edge Linux – 使用WebKit Mac – 需要Safari 源码 https://github.com/SteveSandersonMS/WebWindow.git Zeje Fork的分支: https://github.com/zeje/WebWindow.git 作者博客 https://blog.stevensanderson.com 基于Chromium的Edge 因为大众用的还是Windows操作系统(如win 7,win 10)。为了面向大众,我们在Windows 10下体验下WebWindow。现在下载并安装基于Chromium的Edge: 下载地址: https://www.microsoft.com/en-us/edge 下载地址: https://www.microsoft.com/en-us/edge/business/download (建议) 中间可能在升级的时候,要求你更新操作系统才可以安装(安装过程略) 体验 本人的体验环境是: Window 10

工作流

浪尽此生 提交于 2020-08-06 02:47:23
工作流 前言 前面学习了很多多线程和任务的基础知识,这里要来实践一下啦。通过本篇教程,你可以写出一个简单的工作流引擎。 本篇教程内容完成是基于任务的,只需要看过笔者的三篇关于异步的文章,掌握 C# 基础,即可轻松完成。 C#多线程(13):任务基础① C#多线程(14):任务基础② C#多线程(15):任务基础③ 由于本篇文章编写的工作流程序,主要使用任务,有些逻辑过程会比较难理解,多测试一下就好。代码主要还是 C# 基础,为什么说简单? 不包含 async 、await 几乎不含包含多线程(有个读写锁) 不包含表达式树 几乎不含反射(有个小地方需要反射一下,但是非常简单) 没有复杂的算法 因为是基于任务(Task)的,所以可以轻松设计组合流程,组成复杂的工作流。 由于只是讲述基础,所以不会包含很多种流程控制,这里只实现一些简单的。 先说明,别用到业务上。。。这个工作流非常简单,就几个功能,这个工作流是基于笔者的多线程系列文章的知识点。写这个东西是为了讲解任务操作,让读者更加深入理解任务。 代码地址: https://github.com/whuanle/CZGL.FLow 这两天忙着搬东西,今天没认真写文章,代码不明白的地方,可以到微信群找我。微信名称:痴者工良,dotnet 的群基本我都在。 节点 在开始前,我们来设计几种流程控制的东西。 将一个 步骤/流程/节点 称为

Shone.Math开源系列1 — 基于.NET 5实现Math<T>泛型数值计算

别等时光非礼了梦想. 提交于 2020-08-06 02:31:25
Shone.Math开源系列1 — 基于.NET 5实现Math<T>泛型数值计算 作者:Shone .NET 5 preview 4已经可用了,从微软Build2020给出的信息看,.NET 5将实现框架统一,.NET 6将实现界面统一。开源的.NET更加有活力,咱们也从基础开始贡献一点微薄力量,拥抱开源,拥抱.NET未来。 Shone.Math 是一个支持Math<T>泛型数值计算和Real实数运算(浮点数、分数、PI,E,Log,Exp等无理数)的轻量级基础数学库 。该项目开源地址https://github.com/shonescript/Shone.Math,是本人把多年代码积累正式转向.NET 5,也是我的第一个开源项目,请大家多多支持了。 一、.NET泛型数值计算优势 .NET 2.0开始支持泛型编程,支持IEnumerable<T>, List<T>, Func<T,T,…>等各种泛型类型,提高了编程效率和质量,这是公认的价值。 但是对于基础类似的数值运算,.NET没有默认泛型实现方式。StackOverflow上有大量关于泛型数值计算的讨论,C#9.0的部分草案建议也提出添加对泛型计算的支持。 在大量处理数据时,特别是几何或空间数据计算时,泛型数值计算的主要优势是: (1)可重用: 专注于数值计算算法,不用为每种数据编写实现,提高开发效率; (2)无装箱:

C# 数据操作系列

拟墨画扇 提交于 2020-08-06 02:08:24
C# 数据操作系列 - 5. EF Core 入门 0.前言 上一章简单介绍了一下ORM框架,并手写了一个类似ORM的工具类。这一章将介绍一个在C#世界里大名鼎鼎的ORM框架——Entity Framework的Core版。 Entity Framework 非Core版目前已经更新到了6代,这是一款经过检验的ORM框架。在这里简单介绍一下Entity Framework(简称EF,额,别拿这个当关键字搜索,要不然你会被忽悠到一个英语培训机构的)的优点。 C#的设计理念是约定优于配置,意思就是通过一定程度的规范性格式化的写法来避免使用配置文件或者配置代码等。而EF可以说是很好的诠释了这个理念。 EF可以在不使用任何配置的前提下,自动解析类与表之间的映射(具体的映射逻辑与我们手写的ORM工具类一致或相近)。 自动跟踪更改。在直接使用通过EF获取的元素时,EF会自动跟踪哪些字段发生了变化,当手动调用保存的时候,EF就会把数据回传给数据库。 可以延迟加载需要的数据,外键引用属性、查询结果等 丰富的映射关系,支持一对一,一对多,多对多,甚至继承、单表多实例等 可以使用Linq 进行查询 非Core版的可以通过数据库表生成实体类,两种都可以通过实体类生成表 基于 ADO.NET 的数据库连接和可用于连接到 SQL Server、Oracle、MySQL、SQLite、PostgreSQL

第三十七节:系统证书管理和gRPC基于数字证书的认证和授权

本小妞迷上赌 提交于 2020-08-06 01:21:32
一. 证书管理 1. 如何生成证书 (1). 关于阿里云证书和证书的相关概念  详见:https://www.cnblogs.com/yaopengfei/p/10648151.html (抽时间重新配置一遍) (2). 本地生成测试证书  详见:https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps  这里使用案例9:【New-SelfSignedCertificate -Subject "localhost" -TextExtension @("2.5.29.17={text}DNS=localhost&IPAddress=127.0.0.1&IPAddress=::1")】 2. 本地计算机证书管理 (1).查看计算已有的证书  cmd命令行→输入certmgr→可以查看当前用户下的证书以及受信任的颁发机构 (2).证书导入和添加信任  cmd命令行→输入mmc→进入控制台页面(默认空白)→选中文件中的‘添加/删除管理单元’→将'证书'一项添加进去 导入步骤:  A.以管理员的身份运行powershell,运行证书生成指令【New-SelfSignedCertificate -Subject "ypf" -TextExtension