- 博客(36)
- 资源 (174)
- 问答 (1)
- 收藏
- 关注
原创 ASP.NET Core 将文件夹内容输出为压缩包文件方法
本文主要是告诉大家一个省内存的方法,将整个文件夹的内容作为一个压缩包输出,但是实际上没有申请那么多的内存,也不需要升级创建一个压缩包文件。原理是通过逐个读文件然后按照压缩包格式输出在每个请求的方法可以拿到 HttpContext 属性,通过这个属性拿到 Response 属性,在这里可以使用 BodyWriter 属性,在这个属性里面写入的内容将会被客户端下载而这个属性可以作为 Strea...
2020-07-30 00:39:32 2568 1
原创 dotnet OpenXML 文本 BodyProperties 的属性作用
本文收集 a:bodyPr 文本框属性 BodyProperties 的属性的作用根据 ECMA-376 文档 21.1.2.1.1 bodyPr (Body Properties) 在 Office 的 OpenXML 使用这个属性定义文本框的属性本文的 OpneXMl SDK 的获取代码前提都有以下代码public void Foo(BodyProperties textBodyP...
2020-07-30 00:39:32 494
原创 Office Open XML 的测量单位
本文记录 Office Open XML (OOXML) 的测量单位在 Office Open XML 默认单位是 dxa 也就是像素点的 20 倍,如 ISO 216 A4 (210x297mm ~ 8.3×11.7in) 的大小可以使用下面代码表示在页面大小 Page width Page height 和边距 margin 和缩进 tabs 使用<w:pgSz w:w=&#...
2020-07-29 00:44:37 1041
原创 dotnet 的 TaskCompletionSource 的 TrySetResult 是线程安全
在创建一个 TaskCompletionSource 期望让等待的逻辑只会被调用一次,而调用的是多线程,可以使用 TrySetResult 方法,这个方法是线程安全,只会让 TaskCompletionSource 被调用一次在多个线程调用 TaskCompletionSource 的 TrySetResult 方法,只有一个线程能进入设置,其他线程将会拿到返回 false 的值测试代码...
2020-07-29 00:44:37 599
原创 Roslyn 在 NuGet 包中放注释 xml 文件的方法
本文告诉大家如何在打出的 NuGet 包含代码的注释,这样安装了 NuGet 的小伙伴就可以在 VS 上看到对应的方法和类的注释在使用 SDK Style 格式,可以使用下面一句话在输出的时候添加 xml 注释文件,在打包 NuGet 添加 xml 注释<PropertyGroup> <GenerateDocumentationFile>true&l...
2020-07-29 00:44:37 724 5
原创 Roslyn 打包 NuGet 包添加改动日志
默认的 NuGet 包支持在 releaseNotes 中添加更改日志,用户可以通过更改日志了解各个版本更新的内容。在 SDK Style 格式的 csproj 文件,可以读取本地的文本文件的内容作为 NuGet 包的改动日志在我的团队的 CBB 基础库项目的文件规范,要求每个项目都会包含 README.md 和 CHANGELOG.md 文件,其中的 CHANGELOG.md 文件就是...
2020-07-29 00:44:37 272
原创 WPF 列表右键菜单比较符合 MVVM 的命令绑定方法
群里小伙伴问我如何在 ListView 的右击的时候知道右击的是哪一项,他想要获取对应的行信息。他使用的是 GridView 做的,于是我告诉他需要自己写 ItemContainerStyle 在 GridViewRowPresenter 里添加右键的逻辑。但是这样写不清真,我问到了他的本质问题其实只是想要做右键菜单。刚好我在写一个测试应用,用于测试我的文件下载库,此时需要用到在右击某一个下载项的...
2020-07-28 00:27:55 2002
原创 dotnet 使用 SemaphoreSlim 可能的内存泄露
在使用 SemaphoreSlim 这个锁,能做到的是指定让任务执行几次,同时提供异步方法,减少线程占用。但异步的方法如果没有用对,会因为异步状态机的引用,而存在内存泄露在 dotnet 的 SemaphoreSlim 的用法基本上是一个线程调用 WaitAsync 等待其他线程调用 Release 释放,在 Release 方法可以设置释放几次,设置之后就能通过几次的 WaitAsync...
2020-07-27 00:43:02 408
原创 dotnet OpenXML 文本 EndParagraphRunProperties 的作用
其实我想要记录的仅仅只是 a:endParaRPr 对文本布局的作用按照 ECMA 376 的说法,此属性的作用是指定用户在此段落后开始输入其他文本时要保留的属性。只有在此段落的样式与段落本身不同时,才应设置此属性文本的属性会受到页面以及模版和所在段落的影响,而 a:endParaRPr 是一个放在 <a:p> 里面的标记,用来表示这一段的结束,在 OpenXML SDK 的...
2020-07-25 01:08:46 447
原创 dotnet OpenXML 文本 Text Line Break 的作用
本文主要和小伙伴聊 a:br 这个标记的作用在 OpenXML 的 <a:br/> 的定义是 Text Line Break 是放在文本的 <a:p> 的标记,用于表示换行如 ECMA 376 文档的 21.1.2.2.1 所说,这个标记的作用是在一段内,将两个 TextRun 使用一个垂直的换行分割。这个元素可以具备当前的 rPr (RunProperties)...
2020-07-24 06:13:23 475
原创 dotnet OpenXML 简单聊聊 PPT 文本解析
在 Office 里面的文本解析最全的范围是 Word 文本,就是属性数量本身就特别多。本文只是简单和大家聊聊 Office 里面的 PPT 的文本的解析入门。尽管 PPT 的文本也是采用 DrawingDL 的文本属性为主,不过会用到的属性将比 Word 少很多。本文将和小伙伴介绍 PPT 的文本存放的方式在 PPT 中的文本框也是形状,只是形状里面添加了特殊的设置。而没有添加特殊设置的...
2020-07-24 06:13:23 692
原创 dotnet OpenXML 从文档生成创建文档的代码的库
本文和大家介绍 Serialize.OpenXml.CodeGen 这个支持从某个文档生成用于创建出这个文档的 C# 或 VB 代码的库。作用就是可以让小伙伴在拿到一份模版文件之后,可以通过 Serialize.OpenXml.CodeGen 生成能创建出这份文档的 C# 或 VB 的代码,用于在这份代码上面更改功能,做到创建定制 Docx 或 PPTX 或 Xlsx 文档的功能这是一个完...
2020-07-23 00:34:26 383
原创 WPF 绑定继承的样式提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式
在 WPF 中,如果有一个样式是继承另一个样式,而样式没有使用 TargetType 那么在运行的时候会提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式在界面添加下面代码 <Window.Resources> <Style x:Key="Style1" TargetType=&#...
2020-07-22 04:14:09 950
原创 Office 文档 文本排版布局 中华人民共和国国家标准 标点符号用法
我在做一个和 Office 差很多的文本排版软件,而文本排版软件里面的是有国家标准的,如果不符合标准那么这个排版软件是不专业的,或者说这个软件只是一个纯文本软件,而不是一个能做文档的软件核心规则如下其中标点符号规则相对复杂,规范如下详细请看 GB/T 15834 标点符号用法请自行百度 GB/T 15834 就可以找到标准文档当前支持最好的是 WPS 的文本排版,支持较弱的...
2020-07-20 10:19:53 569
原创 dotnet ConcurrentDictionary 的 GetOrAdd 性能比 TryGetValue 加 TryAdd 低
我在 Office 的 Open-XML-SDK 库里面找到有代码线程不安全,代码里面使用了 TryGetValue 加 TryAdd 的方法添加对象,而线程安全的方法是通过 GetOrAdd 方法。不过在小伙伴的评论我找到了 GetOrAdd 性能其实在有闭包的时候不如使用 TryGetValue 加 TryAdd 调用这两个方法,但是 GetOrAdd 的优势在于能做到只创建一次对象在...
2020-07-17 03:12:15 948 1
原创 C# 8.0 文件长度 Bytes 字节转 KB 等单位字符串
本文将使用 C# 8.0 写一个相对比较省内存和性能不差的将文件长度从 Bytes 转换为单位使用 KB 或 MB 或 GB 等单位的字符串的方法代码可以复制在你的实际软件中使用 static class FileSizeFormatter { public static string FormatSize(long bytes, string format...
2020-07-13 01:55:09 938
原创 使用 IOC 控制反转和 DI 依赖注入的意义
其实我的标题没写对,这个话题我是聊不下去的。 本文只和小伙伴聊聊为什么使用容器注入,优缺点是什么。我通过问问题的方式让小伙伴了解这么做的意义在开始之前我就可以告诉小伙伴使用容器注入的缺点了,尽管这很有争议内存泄漏降低性能那是否 IOC 控制反转意味着一定需要配合 DI 依赖注入?答案是不一定的,还有好多有趣的手段那 DI 依赖注入和容器注入有什么关联?其实容器注入是依赖注入的一...
2020-07-13 01:55:09 342
原创 讲师培训 多米诺原则
我饿了,然后我要开车我总是认为其他人无法理解我的思路,以及我的方案,我总是认为自己的思路很快但实际上是这样?其实仅是表达的问题,有太多默认的知识没有被说出来我饿了,然后我要开车。逻辑是什么?为什么要开车?我饿了,我没力气走路了,接下来我想用最快的速度到达餐厅,所以我要开车。点出中间的步骤,听众的逻辑就清晰我搭建了自己的博客 https://blog.lindexi.c...
2020-07-13 01:02:05 214
原创 制作的 dotnet tool 运行失败提示依赖缺失
小伙伴做了一个很好用的 dotnet tool 工具,但是这个工具仅在他的设备上能运行,在我的设备上运行就会退出提示 An assembly specified in the application dependencies manifest (LindexiDoubi.deps.json) was not found 找不到依赖默认选择 dotnet tool 的 NuGet 包是会带上...
2020-07-13 01:02:05 1085
原创 dotnet OpenXML 为什么资源使用 Relationship 引用
在 OpenXML 文档格式里面,所有的资源以及页面之间的引用等,都是通过 Relationship 的引用,如资源需要通过 GetReferenceRelationship 的方法才能拿到。那为什么要这样设计呢在做 Office 解析,可以看到资源的引用,如图片的引用等,不是应用相对的文件路径,而是使用 r:id="xx" 的方式引用,而实际的引用文件需要在 xx.rel...
2020-07-10 00:53:05 495
原创 dotnet OpenXML 的 spcPct 和 spcPts 表示距离的不同
在 OpenXML 里面的文本排版里面使用到 spcPct (Spacing Percent) 和 spcPts(Spacing Points)两个不同的单位用来表示段前空白和段后空白以及行间距在 Office 的文本排版里面,会在 spcAft (Space After) 段后空白空间以及 spcBef (Space Before) 段前空白空间等使用 spcPct (Spacing P...
2020-07-10 00:53:05 409
原创 推荐官方开源 PInvoke 库 包含大量 win32 封装
在调用 win32 库的时候,小伙伴会遇到的问题是不知道对应的 win32 函数应该如何写。或者在网上抄了的代码的实现都有些诡异,想要自己封装发现工作量太大。好消息是官方将 PInvoke 库在 dotnet 基金会完全开源,包含了大量的 Win32 库,如 gdi32.dll 和 kernel32.dll 和 user32.dll 等使用官方的库的优势是什么呢?第一个就是减少从网上复制粘...
2020-07-10 00:53:05 1427
原创 C# dotnet 使用 FileStream 随机文件读写
本文说的随机文件读写的随机的反义词是顺序,这里的随机文件读写对应顺序文件读写。表示文件可以不按照顺序进行读写进行文件读写的时候,基本上读是几乎不存在问题的,而写的话就稍微坑了一点,在 dotnet 里面默认没有提供 RandomAccessStream 类,这个 RandomAccessStream 类仅在 UWP 中可以使用如果在不引用 UWP 的 WPF 里面,或者在 ASP.NET...
2020-07-09 00:19:20 1108
原创 Office 文档解析 文档格式和协议
本文讨论的 Office 文档指的是 Office 2007 及以后的 PPTX 和 xlsx 等格式的文件。在 Office 2007 之前使用的不公开标准的二进制格式定义。在 Office 2007 之后的文档格式使用 OOXML 国际标准定义,本文将告诉大家这个标准的协议和格式在 Office 2007 之后的 Office 文档格式采用的是 OOXML 标准格式。那什么是 OOXML...
2020-07-09 00:19:20 2649
原创 通过 cmd 批处理文件将 16 进制转 10 进制数字
我在用户的电脑上通过 spyxx 找到某个进程的 id 都是在 spyxx 使用 16 进制显示,而任务管理器使用 10 进制显示,用户的电脑没有计算器。我如何使用 bat 或 cmd 等批处理文件快速将十六进制的数字转换为十进制的数字创建一个文本文件,修改后缀名为 cmd 文件使用如下代码即可创建一个变量,在变量里面设置十六进制,此时输出就是 10 进制字符串set /A hex=0x...
2020-07-09 00:19:20 3766 1
原创 dotnet 通过依赖注入的 Scoped 给工作流注入相同的上下文信息
本文将来聊聊 Microsoft.Extensions.DependencyInjection 这个依赖注入框架的 Scoped 功能的一个应用,这个框架是默认 ASP.NET Core 的核心库将会默认被引用。而其他 .NET 的应用如 WPF 或 Xamarin 等也可以使用这个库。因此本文标题就是 dotnet 而不是具体哪个框架在开发的时候,咱会有一些复杂的逻辑需要多个类合作进行执行,而...
2020-07-09 00:19:20 783
原创 C# dotnet WPF 使用 OpenXml 解析 Excel 文件
在 2013 微软开源了 OpenXml 解析库,在微软的 Excel 文档,使用的文档格式就是国际规范的 OpenXml 格式。这个格式有很多版本,详细请看百度。因为表格文稿使用的是 OpenXml 在 .NET 开发可以非常简单将 Excel 文档进行解析,大概只需要两句话本文通过一个简单的 WPF 程序告诉大家如何解析,这个简单的 WPF 程序简单到仅有一个按钮,在点击按钮时自动解析 ...
2020-07-06 23:55:03 975
原创 dotnet OpenXML 解析 PPT 页面元素文档格式
本文告诉大家在 OpenXML 里面的 PPT 页面 Slide 的元素文档格式是否小伙伴还记得如何使用 OpenXML SDK 获取一份 PPTX 文件的某一个页面?如果不记得,请看 C# dotnet 使用 OpenXml 解析 PPT 文件如下是一个简单的 PPTX 的 Slide 页面大概的主结构如下对应缩写如下p - Presentationp:sld - Sl...
2020-07-06 00:16:18 1206 1
原创 WPF 框架全构建环境虚拟机硬盘分享
现在 WPF 完全开源了,咱可以构建自己私有的版本。我分享一个虚拟机硬盘给你,只要你下载下来,通过 VMWare 导入,即可无需任何配置,拿到一个能构建 WPF 官方源代码的全构建环境。可以用来只做你的定制版的 WPF 框架现在 WPF 完全开源,但是构建的过程中需要用到很多工具,这些工具和 VS 环境相对来说需要一段时间才能拉下来,再加上每个小伙伴有趣的定制,也许会忘记安装复杂的 C++...
2020-07-04 02:05:56 447
原创 WPF 修改屏幕亮度
在 WPF 中可以使用 Dxva2 或 GDI 的方法调整屏幕亮度或获取屏幕亮度比较推荐使用 Dxva2 的方法修改亮度,但不是所有的屏幕都支持的。假定某个设备有多个屏幕,此时可以使用 User32 的 MonitorFromWindow 方法获取某个窗口所在的屏幕,此时根据这个屏幕的返回的 GetMonitorBrightness 判断是否支持 Dxva2 的方法如果 Dxva2 的方...
2020-07-04 01:35:56 1103 2
原创 msbuild 修改 VisualStudio 文件复制到输出目录的路径
在默认的 VisualStudio 可以右击任意的文件,让这个文件在编译时复制到输出目录,但是这个选项将会在复制到输出目录时带上这个文件所在 VisualStudio 的文件夹结构。本文告诉大家几个方法让 VisualStudio 的文件可以在编译时输出到自定义的任意路径文件夹到文件夹将整个文件夹内容输出到自定义文件夹可以使用写一个 Target 的方法如我需要将 VisualStud...
2020-07-04 00:29:25 1955
原创 dotnet 找到博客中引用已失败的链接地址
在我的博客里面会添加很多引用,但是有一大部分的链接失修,访问的时候访问不到了,或者需要更新。于是我写了一个工具,可以协助找到所有的已失败的链接本文用到工具所有代码放在 github 欢迎小伙伴访问使用方法是在参数传入博客所在的文件夹,此时将会找到所有最顶层的博客文件,接着工具将会使用正则 @"([a-zA-z]+://[^\s^:^)^""]*)" 找到所...
2020-07-04 00:29:25 382
原创 asp dotnet core 不正经的提升效率的单元测试方法
在写 asp dotnet core 时,如果没有单元测试保证,需要每个方法都从 web api 的入口开始运行,此时的执行效率是很低的。而如果写单元测试,又有一个坑的问题是写单元测试也是需要时间的。本文告诉大家一些提高效率的方法,这些方法不是正经的用法,但是能提升效率。至于能不能用好不好用就请观众老爷自己决定CUnit 中文命名单元测试在写单元测试时,小伙伴说需要让单元测试的方法名符合...
2020-07-03 00:31:21 499
原创 命令行参数使用 json 有哪些坑
本文和大家聊聊在命令行参数里面使用 json 会遇到的坑空格问题命令行会使用空格分割多个命令,因此 json 里面的格式存在空格时,需要做对应的替换引号问题这是最坑的问题,按照 json 格式的规则, 他的值使用引号包含。根据 文档 可以了解到,需要使用三个引号作为一个引号的表示换行问题带格式化的 json 会添加很多换行,而在命令行参数里面传换行就很好玩,请自行干掉字符串长度...
2020-07-02 15:30:33 931
原创 为什么使用 GUID 做文件名不是好主意
在创建随机文件使用的时候,文件的命名是神坑,我看到一些代码里面使用 GUID 作为文件名,这不是一个好主意。推荐的做法应该使用 Path.GetRandomFileName 方法为什么使用 Guid 作为文件名不是一个好主意,有以下原因文件名冲突有小伙伴认为使用 Guid 作为文件名就一定不会存在冲突,不好意思,如果你是工程师,那么应该会遇到一些非酋的用户,这部分用户将会遇到使用 Gu...
2020-07-02 07:30:33 1099
原创 WPF 获取屏幕某个点的颜色
我在做一个笔迹性能测试工具,想要在笔迹绘制到某个点的时候输出绘制的速度,通过判断屏幕颜色修改判断笔迹绘制到哪。此时需要在不截图屏幕获取屏幕某个点的颜色本文的方法可以在 WinForms 等使用 using System; using System.Drawing; using System.Runtime.InteropServices; sealed class Win3...
2020-07-01 16:00:55 926
gtk 3.24.24 for win32
2022-08-08
鼠标光标大全1.0.0.zip
2021-08-05
Microsoft.Templates.4.1.21179.1.vsix
2021-07-21
ECMA-376.7z
2021-07-03
OpenXMLSDK v25.7z
2021-06-05
Fix WriteableBitmap hangs when source bitmap is rendered on other thread
2021-04-17
WPF 私有构建版本 2021.4.17.zip
2021-04-17
sublime_merge_build_2039_x64_setup.exe
2020-12-23
MonoFramework-MDK-6.12.0.114.macos10.xamarin.universal.pkg
2020-12-23
nuget 5.8.0.6930.exe
2020-11-16
myscript-iink-recognition-text-zh_CN 1.3.zip
2020-07-20
Docker Desktop Installer 2.3.0.3 45519 windows community.7z
2020-07-05
dotnet-sdk-5.0.100-preview.7.20319.6-win-x64.exe
2020-06-23
sublime_merge_build_2020_x64_setup.exe
2020-06-22
vsdbg-16-6-20415-1 vsdbg-linux-musl-x64.zip
2020-06-22
vsdbg-16-6-20415-1 vsdbg-linux-x64.zip
2020-06-22
aspnetcore-runtime-3.1.4-linux-x64.tar.gz
2020-05-23
DPC Latency Checker 1.4.0.zip
2020-05-19
strawberry-perl-5.28.1.1-1-win64-x64.zip
2020-04-23
Snoop 3.0.0-alpha0116.msi
2020-04-18
dotnet-runtime-3.1.2-linux-x64.tar.gz
2020-04-03
aspnetcore-runtime-3.1.2-linux-x64.tar.gz
2020-04-03
影子输入法1.5.6稳定版.7z
2020-04-03
dotnet-core-uninstall-1.0.115603.msi
2020-03-12
PowerShell.Linux.x64.7.0.0-rc.2.nupkg
2020-03-07
dotnet-sdk-3.1.102-linux-x64.tar.gz
2020-03-07
dotnet-sdk-5.0.100-alpha1-015515-win-x64.exe
2020-03-06
mono-6.6.0.161-x64-0.msi
2020-03-01
UnitySetup-WebGL-Support-for-Editor-2018.3.7f1.exe
2020-03-01
dotnet-sdk-3.0.102-win-x64.exe
2020-03-01
mono-wasm-e894d683f9f.zip
2019-11-05
mono-wasm-f5cfc67c8ed.zip
2019-11-05
microsoft.dotnet.ilcompiler.1.0.0-alpha-27527-02.nupkg
2019-10-24
我想在linux运行c#程序,请问我需要做什么?
2015-04-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人