.Net Framework

.Net Core 2.2升级3.1的避坑指南

天大地大妈咪最大 提交于 2020-10-27 01:40:09
写在前面   微软在更新.Net Core版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多。往往是悄咪咪的移除了某项功能或者组件,或者不在支持XX方法,这就很花时间去找回需要的东西了,下面是个人在迁移.Net Core WebApi项目过程中遇到的问题汇总: 开始迁移 1. 修改*.csproj项目文件 <TargetFramework>netcoreapp2. 2 </TargetFramework> 修改为 <TargetFramework>netcoreapp3.1</TargetFramework> 2 修改Program public static void Main( string [] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder( string [] args) => WebHost.CreateDefaultBuilder(args) .UseStartup <Startup>().ConfigureAppConfiguration((hostingContext, config) => { config.AddJsonFile($ " 你的json文件.json " ,

Unity3D下用C#通过WinSCP命令行方式给Linux服务器SCP传文件

喜夏-厌秋 提交于 2020-10-27 01:39:36
遇到一个需求是在Unity3D做编辑器工具时需要把生成的AssetBundle包上传到资源服务器,资源服务器用的Linux。 实现分为三部分:1,C#上传工具类;2,WinSCP脚本;3,传参调用使用上传功能。 1,C#上传工具类 using UnityEngine; using System.Collections; using System.IO; using System; using System.Diagnostics; public class UploadHelper { public static void callUploadProcess(string arguments) { string winScpPath = Directory.GetParent(Application.dataPath) + "/WinSCP/WinSCP.exe"; try { Process proc = null; bool redirectOutput = false; proc = new Process(); proc.StartInfo.FileName = winScpPath; proc.StartInfo.Arguments = arguments; if (redirectOutput) { proc.StartInfo.UseShellExecute =

进击吧! Blazor !第五期 安全

柔情痞子 提交于 2020-10-26 16:45:25
Blazor 是一个 Web UI 框架,可通过 WebAssembly 在任意浏览器中运行 .Net 。 Blazor 旨在简化快速的单页面 .Net 浏览器应用的构建过程,它虽然使用了诸如 CSS 和 HTML 之类的 Web 技术,但它使用 C#语言和 Razor 语法代替 JavaScript 来构建可组合的 Web UI 。通过提供用于编译到 Web 的大小和高效加载的格式,WebAssembly 可让 .Net 在浏览器中运行。 本次系列课程共7次,每2周的周六下午举办。旨在通过,理论加实践结合,从0到1 带你进入 Blazor 的世界。 分享嘉宾 · 张善友 微软 SWAT 特派专家,友浩达科技有限公司 CEO & CTO,.NET 技术专家,连续15年被评为微软 MVP 陈超超 Ant Design Blazor 项目贡献者 拥有十多年从业经验,长期基于.Net技术栈进行架构与开发产品的工作,Ant Design Blazor 项目贡献者,现就职于正泰集团 第五课 安全 · 上课时间: 2020年10月31日 14:00 - 16:00 上课方式: 点击下方 立即报名 ,报名后在 “上课方式” 中查看 上课嘉宾:张善友 以“待办事项”或其他应用为蓝本,注册登录,权限等相关介绍。 参与有惊喜 · 1. 完成7次课程的学习,我们将会为您准备精美的 Blazor

C#中的泛型

夙愿已清 提交于 2020-10-26 14:00:35
1.1 C#中的泛型 .Net 1.1版本最受诟病的一个缺陷就是没有提供对泛型的支持。通过使用泛型,我们可以极大地提高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱、拆箱,在一定程度上提升了应用程序的性能。本文将系统地为大家讨论泛型,我们先从理解泛型开始。 1.1 理解泛型 1.1.1 为什么要有泛型? 我想不论大家通过什么方式进入了计算机程序设计这个行业,都免不了要面对 数据结构和算法 这个话题。因为它是计算机科学的一门基础学科,往往越是底层的部分,对于数据结构或者算法的时间效率和空间效率的要求就越高。比如说,当你在一个集合类型(例如ArrayList)的实例上调用Sort()方法对它进行排序时,.Net框架在底层就应用了 快速排序 算法。.Net框架中快速排序方法名称叫QuickSort(),它位于Array类型中,这可以通过Reflector.exe工具查看到。 我们现在并不是要讨论这个QuickSort()实现的好不好,效率高还是不高,这偏离了我们的主题。但是我想请大家思考一个问题:如果由你来实现一个排序算法,你会怎么做?好吧,我们把题目限定得再窄一些,我们来实现一个最简单的冒泡排序(Bubble Sort)算法,如果你没有使用泛型的经验,我猜测你可能会毫不犹豫地写出下面的代码来,因为这是大学教程的标准实现: public class SortHelper{

7月30日 举办专注于微服务的.NET Conf Focus

南笙酒味 提交于 2020-10-26 12:37:33
2020 年 7 月 30 日, 由.NET基金会和微软 将举办一个在线和为期一天的活动,包括 微软 .NET 团队的演讲者以及社区的演讲者。本次在线大会 专注.NET框架构建微服务,演讲者分享构建和部署云原生应用程序的最佳实践、模式、提示和技巧。有关更多信息和随时了解情况: https://focus.dotnetconf.net/ . 下面和大家几个重量级的分享嘉宾: Scott Hunter, Director of Program Management, .NET David Fowler, Partner Software Architect, Microsoft, Brendan Burns, Corporate Vice President, Microsoft und Kelsey Hightower, Developer Advocate, Google Jessica Deen, Sr. Cloud Developer Advocate, Microsoft Elton Stoneman, Director, Sixeyed Consulting .NET Conf:Focus 系列是 Microsoft 和.NET基金会 提供并重点介绍围绕 .NET 的特定主题的一系列小型实时活动。该系列的第一次会议于2020年1月举行,以Blazor为主题

C#中的泛型

为君一笑 提交于 2020-10-26 05:31:58
1.1 C#中的泛型 .Net 1.1版本最受诟病的一个缺陷就是没有提供对泛型的支持。通过使用泛型,我们可以极大地提高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱、拆箱,在一定程度上提升了应用程序的性能。本文将系统地为大家讨论泛型,我们先从理解泛型开始。 1.1 理解泛型 1.1.1 为什么要有泛型? 我想不论大家通过什么方式进入了计算机程序设计这个行业,都免不了要面对 数据结构和算法 这个话题。因为它是计算机科学的一门基础学科,往往越是底层的部分,对于数据结构或者算法的时间效率和空间效率的要求就越高。比如说,当你在一个集合类型(例如ArrayList)的实例上调用Sort()方法对它进行排序时,.Net框架在底层就应用了 快速排序 算法。.Net框架中快速排序方法名称叫QuickSort(),它位于Array类型中,这可以通过Reflector.exe工具查看到。 我们现在并不是要讨论这个QuickSort()实现的好不好,效率高还是不高,这偏离了我们的主题。但是我想请大家思考一个问题:如果由你来实现一个排序算法,你会怎么做?好吧,我们把题目限定得再窄一些,我们来实现一个最简单的冒泡排序(Bubble Sort)算法,如果你没有使用泛型的经验,我猜测你可能会毫不犹豫地写出下面的代码来,因为这是大学教程的标准实现: public class SortHelper{

十分钟搭建自己的私有NuGet服务器-BaGet

这一生的挚爱 提交于 2020-10-26 05:30:26
目录 前言 开始 搭建BaGet 上传程序包 在vs中使用 其他 最后 前言 NuGet是用于微软.NET(包括 .NET Core)开发平台的软件包管理器。NuGet能够令你在项目中添加、移除和更新引用的工作变得更加快捷方便。 通常使用NuGet都是官方的服务,但你有没有想过搭建自己的NuGet呢?在私有的NuGet上托管一些自己的类库,公司内部的类库等。。。搭建私有NuGet的方法有很多,比如NuGet.Server、ProGet、MyGet等等。本文使用的是BaGet,搭建过程也非常简单,下面进入正题。 开始 搭建BaGet BaGet是一个构建于ASP.NET Core 基础上的 NuGet V3 服务器的开源实现。 github地址: https://github.com/loic-sharma/BaGet 下载release包,我下载的是最新预览版,你也可以选择其他版本: https://github.com/loic-sharma/BaGet/releases/download/v0.3.0-preview4/BaGet.zip 你可以按需要修改一下端口配置,默认是5000: 在解压目录下打开命令行,执行: dotnet BaGet.dll 浏览器访问: http://localhost:8020/ 这样,NuGet服务就搭建完成了,是不是很简单? 上传程序包

关于java调用浏览器下载sqllite db文件的后续及zip压缩代码

試著忘記壹切 提交于 2020-10-26 05:13:36
说明 : 刚写一篇关于导出db文件为sql脚本的文章 -- https://my.oschina.net/u/3774949/blog/4470489 但是如果数据量特别大的话就可能很慢,原来是因为导出db文件乱码所以想解析数据库并生成sql脚本方式, 就在刚刚破案了 ,果不其然确实是前端js部分出了问题 先把前端代码贴出来吧 // 按说blob和 arraybuffer都是一样处理二进制的但是看了下介绍说arraybuffer比 blob更贴近原型 axios ({ url : '/api/backups/backupsDownLoad' , method : 'GET' , responseType: 'arraybuffer' , params : { name : backups. name } }). then ((res) => { console . log (res) const content = res. data const blob = new Blob ([ content ], { type : "application/octet-stream" }) let fileName = backups. name . substring ( 0 , backups. name . indexOf ( "." )) + ".db" ; if (

锁屏的一个有趣的问题:HWND_TOP 与 HWND_TOPMOST 漫谈

别来无恙 提交于 2020-10-25 21:52:38
一、引言 今天遇到了一个非常有趣的问题,问题背景是一个用户反馈了这么一个问题: 当软件已经被锁屏了: 1. 用户点击出一个窗口显示(这是一个真窗口) 2. 此时用户再通过停靠在侧边的 QQ 界面,仍然可以通过点击里面的 QQ空间 图标点开网页,从而进入浏览器界面 根据我们软件的需求,进入了锁屏界面,就不应该再能让用户进入其他软件界面了才对。 那么,这个问题究竟是什么原因呢? 是什么原因引起的,我们的锁屏机制就那么简单的被破解了吗? 二、探索:WS_EX_NOACTIVATE 猜测1:是否是新建的窗口夺取了主窗口的输入焦点,而导致主窗口被夺取了焦点,然后丧失了锁屏功能呢? 这里,我经过 CreateWindow() 传入了 WS_EX_NOACTIVATE 参数创建了非激活窗口(类似我们的输入法的候选窗口),经过测试,这个方法并没有解决问题。 结论:这个问题与新建的窗口是否获取焦点或者激活没有关系。 三、探索:SWP_NOACTIVATE 猜测2: 是否可以通过 SetWindowPos 函数设置属性 SWP_NOACTIVATE 不激活窗口来解决问题呢? 这里,我抱着估计也不行的想法还是厚着脸皮去试了下,仍然还是不行。 结论:这个问题绝对与新建的窗口是否获取焦点没有关系。 四、探索:锁屏机制 猜测3: 是否与锁屏机制有关? 这里,我去看了看锁屏实现的那个类,顺便说下

分布式系统架构之构建你的任务调度中心

╄→гoц情女王★ 提交于 2020-10-25 13:42:44
分布式系统架构之构建你的任务调度中心 分布式系统中,我们经常会遇到定时执行任务,而这些定时任务中,多数情况都是需要执行一些http请求。 比如: 轮训支付结果(虽然第三方支付中心有支付回调,但有时候并不能有效保证你的业务系统能收到正确的结果) 未支付订单超时取消,电商系统订单,用户未支付订单,超时后取消订单 已支付已签收订单,超时后自动完成订单 同步微信公众号用户数据做分析 同步企业微信通讯录及客户信息 等等 很多业务场景都需要用到定时执行http请求的任务 本次,我们在netcore 环境,使用 Jango.JobCenter 来快速构建我们的任务调度中心 Jango.JobCenter 目前是基于Hangfire的 .NETStandard 2.0版本 Demo源码,请移步 https://github.com/jangocheng/Jango.JobCenter.demo dotnet new webapi 创建一个webapi项目 dotnet add package Jango.JobCenter --version 1.0.0.1 编辑StartUp文件 引用 Jango.JobCenter using Jango.JobCenter; 修改ConfigureServices(IServiceCollection services) services