c#
文章平均质量分 72
lindexi_gd
我是微软Windows应用开发方向的最具价值专家,欢迎访问我博客blog.lindexi.com里面有大量WPF和UWP博客
展开
-
Roslyn 读取 PackageReference 的版本号和内容
在写 msbuild 的预编译逻辑,如果想要拿到项目安装的 NuGet 库和版本,可以通过获取 PackageReference 的方法获取获取方法是放在 Target 里面,如下面代码 <Target Name="LabaijalacarDaqarheelu" BeforeTargets="Build"> <Ite...原创 2020-08-07 00:24:41 · 580 阅读 · 0 评论 -
dotnet 删除自身程序的方法
本文告诉大家一个逗比方法可以用来删除程序自身我写了一个逗比 WPF 程序,这个程序会做邪恶的事情,会假装成小伙伴的桌面,然后小伙伴以为是桌面,接着打开任何程序都是在逗他的, 所以我期望在程序运行完成之后自动删除,这样小伙伴就不知道是谁做的那么如何使用有趣的方法删除程序自身可以试试下面代码 private static void DeleteItselfByCmd() { ...原创 2020-08-08 00:25:46 · 999 阅读 · 0 评论 -
.NET Core 用 Blazor 做 jmeter 系列视频
本文来安利大家宇辰大大的 .NET Core 用 Blazor 做 jmeter 系列视频.Net Core 用Blazor做 jmeter 001之 Ribbon 布局 - Element Blazor环境配置.Net Core 用Blazor做 jmeter 002之 Ribbon 布局 - 组件API设计.Net Core 用Blazor做 jmeter 004之 Ribbo...原创 2020-08-10 00:43:03 · 694 阅读 · 0 评论 -
WPF 从零手动创建承载 Xamarin Forms 项目
现在完全开源的 Xamarin Forms 是支持使用 WPF 进行承载,也就是使用 Xamarin 开发的控件等是可以在 WPF 项目使用的。本文来告诉大家如何在 WPF 中运行 Xamarin Forms 项目,让 Xamarin Forms 构建为 WPF 应用默认的 VS 没有加上 WPF 的模版,而官方文档 WPF Platform Setup - Xamarin 旧了一点,因为...原创 2020-08-11 00:44:25 · 746 阅读 · 2 评论 -
Xamarin Forms WPF 干掉默认的窗口导航条
在创建默认的 Xamarin Forms WPF 应用,将和 UWP 应用的界面不相同,在 WPF 项目会显示顶部蓝色的一条,看起来不好看,那么可以如何干掉他下图是一个默认的 Xamarin Forms 应用此时显示工具的蓝色条就是本文说的 窗口导航条,在 Xamarin Forms 的源代码,这个导航条是在 FormsWindow.xaml 文件里面,使用 PART_TopAppB...原创 2020-08-11 00:44:25 · 500 阅读 · 0 评论 -
dotnet 在 NuGet 上搜寻好用的 dotnet tool 工具
使用 dotnet tool 可以方便分发给小伙伴很多有趣的工具,而小伙伴们也可以通过 dotnet tool 一句命令安装上强大的工具。但有一个问题是,我如何知道有这样的工具? 当前可以在 nuget.org 上搜寻到 dotnet tool 工具进入 https://www.nuget.org 然后搜寻一个关键词,如我想要找到一个文件下载器此时将会返回给你 CBB 库的以及 do...原创 2020-08-13 02:21:29 · 409 阅读 · 0 评论 -
dotnet OpenXML 解析 PPT 文本字体获取详解
在 OpenXML 的 PPT 的文本的字体是一个比较复杂的概念,即使在 OpenXML SDK 的辅助下,也需要自己写很多的逻辑。通过 ECMA 376 文档里面散落在各地的描述,和 dotnetCampus.OfficeDocumentZipper 工具的实验帮助之下,我摸到了本文将要告诉大家的规则,以及逻辑的实现有大量的 Office 相关软件在解析 PPT 文档使用的文本段的字体都...原创 2020-08-14 08:15:40 · 894 阅读 · 0 评论 -
dotnet core 在 MAC 系统下删除应用程序自己后调 Process Start 方法将会抛出 Win32 异常
在 MAC 系统下,如果在运行过程中,应用程序的文件被删除了,那么此时如果应用程序执行了 Process.Start 方法时,将会抛出 Win32Exception 异常我写了一个工具 dotnetCampus.UpdateAllDotNetTools 用来更新所有的 dotnet tool 工具。因为 dotnetCampus.UpdateAllDotNetTools 也是一个 dotn...原创 2020-08-14 08:15:40 · 689 阅读 · 0 评论 -
win10 uwp 不显示 SplashScreen 欢迎界面的方法
在 UWP 的应用,欢迎页面 SplashScreen 是用户第一个看到的界面,这个界面是由 ApplicationFrameHost 读取 UWP 配置的图片显示出来的,因此 UWP 才能做到点击应用瞬间启动那么如果我不想显示启动界面 SplashScreen 的图片,可以如何做?有两个方法,第一个方法是比较推荐的,在应用程序如果能启动足够快,那么将不显示欢迎界面,如果启动不够快那么依然...原创 2020-08-15 05:08:22 · 546 阅读 · 0 评论 -
WPF 在 XAML 写 C# 代码
本文告诉大家如何扔掉 cs 文件,在 xaml 写 C# 代码,将 xaml 和 C# 代码写在一个文件在 WPF 的 XAMl 有一个小伙伴也许看到但是忽略的特性就是 x:Code 特性,这个特性在 UWP 版本被干掉了,因为太好用了其实小伙伴忽略这个特性也是对的,因为从设计上这不是一个好的方案,将 XAML 和业务逻辑 C# 代码放在一个文件里面但是可以用来做和界面十分相关的逻辑,...原创 2020-08-15 05:08:22 · 1789 阅读 · 0 评论 -
C# 纯控制台创建一个全屏窗口
本文告诉大家如何使用 win32 方法创建一个全屏的窗口使用 user32.dll 的 CreateWindowExW 方法就能创建窗口,代码请看 internal class Program { private static void Main(string[] args) { var thread = new Th...原创 2020-08-18 08:13:37 · 1160 阅读 · 2 评论 -
关于技术规划的想法
这是我和总工聊了一个下午之后,我的收获。但是技术规划是每个人都有自己的想法,同时和具体的团队和时机相关,再加上我自己没有实际参与任何的规划,我只是执行技术规划的其中很小的一个点,因此本文的内容一定存在争议我不期望说很多关键词,因此这部分很多大佬都有写过书。本文只聊我所看到的,和我所想到的本文没有涉及到具体的团队和事务,都是使用其他公司和团队作为例子。如果有小伙伴觉得不该发,我将会删除本文...原创 2020-08-21 01:19:32 · 437 阅读 · 0 评论 -
WPF dotnet core 如何开启 Pointer 消息的支持
在 WPF 下,可以使用和 UWP 一样的 Pointer 触摸架构,只是开启的方式和 .NET Framework 版本有细微的差异看过 win10 支持默认把触摸提升 Pointer 消息 的小伙伴可以了解到,这个博客的方法是通过配置文件的方式而在 .NET Core 的 WPF 下是不会去读取 App.config 文件,那么此时应该如何开启?此时可以通过代码开启打开 App....原创 2020-08-24 00:52:19 · 332 阅读 · 0 评论 -
dotnet 新 SDK Style 项目格式如何使用 InternalsVisibleToAttribute 功能
如果一个项目想要让其他某个指定的项目可以使用到 internal 的类或成员,可以通过标记 InternalsVisibleToAttribute 的方式实现最简单的方法是新建一个 AssemblyInfo.cs 文件,在这个文件里面使用 System.Runtime.CompilerServices.InternalsVisibleToAttribute 指定某个程序集可见using ...原创 2020-08-24 00:52:19 · 347 阅读 · 0 评论 -
Office OpenXml SDK 使用 Fallback 图片显示 Ole 元素
我在写一个 WinForms 程序用来读取 Word 里面的图片显示,在解析 Word 等 Office 文档,会看到一些 ole object 元素,而有些 ole object 会有 Fallback 图片,用这些备用的图片可以显示 ole 元素其实有很多 Office 插件公司在开发,而特殊的元素如何在其他版本打开?或者我用插件做了一个复杂的元素,在没有插件的设备如何让用户看到?在 ...原创 2020-08-24 00:52:19 · 871 阅读 · 0 评论 -
WPF 底层 从手指触摸屏幕到笔迹在屏幕显示中间的步骤
整个 WPF 就是一个UI框架,一个 UI 框架最重要的是 交互 和 显示 部分,而书写这个功能将会完全贯穿 WPF 整个框架的功能。本文非入门级博客,本文包含了大量链接博客,阅读本文你将会了解从用户手指触摸屏幕到最终屏幕打印出笔迹的应用程序执行的步骤本文实际内容不多,但是如果加上链接的博客,那么总内容将会非常多,还请小伙伴仔细阅读本文链接的博客从软件的角度上,可以将触摸屏看成是一个软件...原创 2020-08-25 00:57:02 · 582 阅读 · 0 评论 -
dotnet 为什么开源的运行时仓库代码减少使用 Linq 语句
在 dotnet 开源的 runtime 运行时仓库里面,有微软的大佬说运行时仓库的代码应该减少使用 Linq 语句,那这又是为什么呢微软的 Jan Kotas 大佬说了下面这段话,大概意思就是减少在运行时库里减少对 Linq 的使用Linq maybe saves some allocations, but it comes with other overheads and much ...原创 2020-08-26 02:09:16 · 282 阅读 · 0 评论 -
WPF 使用基于 Chromium 内核的 Microsoft Edge 封装的 WebView2 控件
现在是 2020.08.23 当前这个技术依然是预览版,使用 WebView2 只需要通过 NuGet 安装库,可以支持 Win7 和 Win8 和 Win10 系统,无 IE 依赖。内核使用 Chromium 内核,顶层技术是 Microsoft Edge 封装创建一个 WPF 项目,项目框架要求最低版本是 .NET Framework 4.6.2 或以上, 或 .NET Core 3....原创 2020-08-26 02:09:16 · 2450 阅读 · 0 评论 -
WPF 开启Pointer消息存在的坑
本文记录在 WPF 开启 Pointer 消息的坑启用了Pointer之后,调用Textbox.Focus(),起不来屏幕键盘,必须点在它之上才行,触摸在它之上才行我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新如果在博客看到有任何不懂的,欢迎交流,我搭...原创 2020-08-27 00:44:45 · 623 阅读 · 0 评论 -
WPF 点击按钮时更改按钮样式界面效果的 XAML 实现方法
在 WPF 中按钮 Button 将会吃掉路由事件,此时的 EventTrigger 如果通过 RoutedEvent 是 MouseLeftButtonDown 那么将会拿不到路由事件,也就触发不了,因此样式将不会变更。简单的解决方法就是通过 VisualStateManager 配合 VisualState 来实现实现效果如下,所有代码都是 XAML 代码实现方式为给 Butto...原创 2020-08-27 01:24:21 · 3811 阅读 · 1 评论 -
dotnet 在 UOS 国产系统上安装 Mono 开发工具的方法
本文使用的 UOS 是 UOS 20 x64 版本,这个系统版本是基于 debian 10 的。而默认 mono-devel 是没有提供 UOS 版本,但是有提供 debian 10 版本,而 mono-devel 有很多依赖包,因此手动安装不是很靠谱本文推荐的方法是配置上 debian 10 的源,然后使用 apt-get 安装,这样步骤比较少。但是有缺点是也许 debian 源会帮你更...原创 2020-08-29 00:36:26 · 855 阅读 · 0 评论 -
dotnet 定制 ILogger 实现
默认在 dotnet 里面框架提供了 Microsoft.Extensions.Logging 可以和依赖注入做日志框架,而有些业务,如需要自己定制日志行为,此时就需要定制日志当初写一个类继承 ILogger 是做不到定制,需要再写一个类继承 ILoggerProvider 才好做定制如以下的方法 public class CCloudConsoleLogProvider : I...原创 2020-08-29 00:36:26 · 1241 阅读 · 0 评论 -
dotnet 执行 docker 容器 error MSB4018 CreateAppHost 任务意外失败可能原因
在使用 ASP.NET Core 的 docker 调试的时候,在生成的这一步提示 C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets(424,5): error MSB4018: “CreateAppHost”任务意外失败 可能的原因是 docker 内之前的容器...原创 2020-08-29 03:42:17 · 1111 阅读 · 0 评论 -
dotnet OpenXML 如何判断是形状还是文本
在 OpenXML 格式里面,其实不存在文本这个元素,所有都是形状。但是在 PPT 界面看到的文本框是什么呢?其实他是特别的形状。而几乎所有的形状都可以输入文本,因此区分形状和文本的意义不会特别大,只是在做解析的时候才会碰到在 OpenXML 的 PML 也就是 PPT 使用的格式里面,在 dotnet OpenXML 解析 PPT 页面元素文档格式 告诉大家都是形状那么文本框是什么形状...原创 2020-08-31 04:33:24 · 428 阅读 · 0 评论 -
dotnet 在 Linux 下的 GDI 库对 EMF 图片格式的支持
我想要在 UOS 上支持上古的图片格式,也就是差不多废弃了 20 年的 EMF 和 WMF 增强图形格式,这两个格式十分古老,而在 Windows 下也存在一些不兼容的图片。我在 Windows 下是使用 GDI+ 的方法支持的,可以将 EMF 转 PNG 或 jpg 等格式。而在 UOS 下,因为 GDI+ 是跨平台的,可以使用跨平台的 System.Drawing.Common 库进行转换...原创 2020-08-31 04:33:24 · 568 阅读 · 0 评论 -
dotnet 日志上报的 TracerId 和 SessionId 的意义
在做日志库设计的时候,我会特别考虑日志里面需要带上时间和 TracerId 和 SessionId 两个属性,本文告诉大家带上这两个属性的意义和优势在开始之前,先需要了解为什么需要写日志。其实无论日志内容是什么,都会比没有写日志更好。但是比没有设计的日志,有经过设计的日志的价值更高,详细请看 程序猿修养 日志应该如何写本文来聊聊一个更细的话题,日志里面的 TracerId 和 Sessi...原创 2020-08-31 04:50:24 · 626 阅读 · 2 评论 -
WPF 使用 Skia 绘制 WriteableBitmap 图片
本文告诉大家如何在 WPF 中使用 SkiaSharp 调用 Skia 这个全平台底层渲染框架,使用绘制命令在 WriteableBitmap 图片上绘制内容谷歌提出了 Skia 全平台渲染框架,这是一个很底层的框架,详细请看 google/skia: Skia is a complete 2D graphic library for drawing Text, Geometries, a...原创 2020-08-31 04:50:24 · 854 阅读 · 0 评论 -
dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用
本文告诉大家如何在 UOS 国产系统上开始使用 MonoDevelop 开发,通过创建 GTK# 应用,进入界面开发的第一步在开始之前需要小伙伴先安装好 MonoDevelop 工具安装完成之后,可以在开始菜单找到这个 MonoDevelop 工具打开之后,点击新建项目选择新建 GTK# 2.0 的项目,点击下一步,选择路径,加上项目名请小伙伴记录这个路径,因为 UOS 的...原创 2020-09-03 00:28:26 · 588 阅读 · 0 评论 -
dotnet 在 UOS 国产系统上使用 MonoDevelop 进行拖控件开发 GTK 应用
先从一个 Hello World 应用开始,试试和古老的 WinForms 一样的拖控件式开发在创建完成一个 GTK# 2.0 应用之后,咱可以试试开始拖控件的开发,当然这个开发方式开发出来的应用界面有点古老。不过作为玩还是不错的先拖入一个容器,和 WPF 一样,窗口里面的内容只允许一项,如果这一项是组件,那么意味着不能添加其他的元素,因此此时推荐使用是一个一个容器接着拖入一个按钮和一...原创 2020-09-03 00:28:26 · 477 阅读 · 0 评论 -
Roslyn 解决找不到 SolutionDir 属性
在旧版本的 csproj 格式也就是 Franken-proj 格式,可以使用 SolutionDir 拿到当前sln文件所在的文件夹,但是在 SDK Style 格式的项目文件,是拿不到这个属性的,本文告诉大家如何做到兼容之前的逻辑其实不是 SDK Style 拿不到 SolutionDir 属性,而是因为没有使用 sln 加入构建如我在一个项目里面的 csproj 文件添加下面代码...原创 2020-09-03 00:28:26 · 344 阅读 · 0 评论 -
dotnet OpenXML 的 Slide Master 和 Slide Layout 是什么
本文来告诉大家在解析 PPT 文档的时候,元素继承以及占位符需要用到的 Slide Master 和 Slide Layout 是什么在做 Office 解析的时候,小伙伴需要特别的去学习一下 Office 哦,不然有很多概念将会难以理解。而 Office 有多强?光属性定义加上注释的 C# 代码文件就有 15M 这么多基本上所有市面上的解析 Office 的软件都只是实现很少的一部分功...原创 2020-11-19 00:47:55 · 846 阅读 · 0 评论 -
读书笔记 dotnet 大对象堆和小对象堆
本文是读还没出版的伟民哥翻译的 .NET内存管理宝典 - 提高代码质量、性能和可扩展性 这本书的笔记原创 2020-09-26 08:50:15 · 662 阅读 · 0 评论 -
WPF 最简逻辑实现多指顺滑的笔迹书写
只需不到 150 行代码就能实现一个支持多指顺滑的笔迹书写的应用。当然,这个应用除了笔迹书写外,没有其他任何功能。本文将不会使用 InkCanvas 而是使用更底的方法,通过 Stroke 进行绘制原创 2020-09-26 08:48:09 · 1230 阅读 · 2 评论 -
dotnet 里的那些锁 AutoResetEvent 用法
本文告诉大家在 dotnet 里的 AutoResetEvent 锁的用法原创 2020-09-26 08:47:15 · 548 阅读 · 0 评论 -
C# dotnet 的锁 SemaphoreSlim 和队列
本文主要是试验在顺序进入等待 SemaphoreSlim 的任务是否会按照顺序经过锁执行原创 2020-09-26 08:46:18 · 749 阅读 · 0 评论 -
C# dotnet 自己实现一个线程同步上下文
昨天鹏飞哥问了我一个问题,为什么在控制台程序的主线程等待某个线程执行完成之后回来,是在其他线程执行的。而 WPF 在等待某个线程执行完成之后,可以回到主线程执行。其实这是因为在 WPF 和 WinForms 和 ASP.NET 框架里面都自己实现了线程同步上下文,通过线程同步上下文做到调度线程执行。本文就来和小伙伴聊一下如何自己实现一个线程同步上下文我昨天和鹏飞哥说的时候感觉特别绕,但是实...原创 2020-06-09 00:21:24 · 1444 阅读 · 0 评论 -
C# dotnet 使用 TaskCompletionSource 实现暂停功能
在 C# 里面,可以使用 dotnet 的 TaskCompletionSource 方法自己实现一个异步任务,这个任务可以方便设置任务是否完成等做到让等待的过程继续或等待。根据这个功能可以解决在复杂的功能里面通过异步等待的方法实现暂停。做法就是等待一个异步任务,如果这个功能处于暂停,那么只需要让这个异步任务不结束,此时整个功能就会在等待,直到设置了异步任务完成用异步等待的方式实现暂停有什...原创 2020-05-08 07:15:37 · 1020 阅读 · 0 评论 -
使用 C# 写脚本的优势和方法
现在很方便就可以将 C# 作为某个脚本使用,本文这里的脚本指的是直接执行源代码的方式。现在是 2020 现在的 C# 默认在 dotnet 的支持下,可以作为脚本使用,本文将告诉大家使用 C# 写脚本的优势和方法优势优势如下:基于 dotnet 的 C# 有整个 dotnet 的基础库和通过 NuGet 带来的海量的第三方库,有超级多的功能都有大佬实现过。使用 C# 写脚本可以通过大量...原创 2020-05-07 02:55:28 · 9427 阅读 · 0 评论 -
C# dotnet 的锁 SemaphoreSlim 和队列
本文主要是试验在顺序进入等待 SemaphoreSlim 的任务是否会按照顺序经过锁执行我在一个有趣的WPF程序里面,需要限制任务同时执行的线程数量,不然用户就会说用我的程序会让电脑卡渣。而我的任务是需要按照指定顺序执行的,我需要每次同时仅执行10个任务,同时任务执行按照传入的顺序此时可以用到 SemaphoreSlim 这个类,这个类的作用如下,给定初始的可以通过锁的数量,以及这个最大可...原创 2020-04-15 16:01:08 · 495 阅读 · 0 评论 -
为何 C# 的指针不是可空类型
在 C# 里面的指针实际上使用 int32 或 int64 存储,在 C# 里面的指针需要开启不安全代码才能使用,这里的指针是一个结构体,而结构体是存在值的我尝试写出 byte*? foo 的时候,构建的时候 VS 提示下面代码// Error CS1519: Invalid token '?' in class, struct, or interface member ...原创 2020-04-09 12:18:38 · 626 阅读 · 0 评论