- 博客(2029)
- 资源 (168)
- 问答 (1)
- 收藏
- 关注
原创 WPF 框架全构建环境虚拟机硬盘分享
现在 WPF 完全开源了,咱可以构建自己私有的版本。我分享一个虚拟机硬盘给你,只要你下载下来,通过 VMWare 导入,即可无需任何配置,拿到一个能构建 WPF 官方源代码的全构建环境。可以用来只做你的定制版的 WPF 框架现在 WPF 完全开源,但是构建的过程中需要用到很多工具,这些工具和 VS 环境相对来说需要一段时间才能拉下来,再加上每个小伙伴有趣的定制,也许会忘记安装复杂的 C++...
2020-07-04 02:05:56 446
原创 WPF 修改屏幕亮度
在 WPF 中可以使用 Dxva2 或 GDI 的方法调整屏幕亮度或获取屏幕亮度比较推荐使用 Dxva2 的方法修改亮度,但不是所有的屏幕都支持的。假定某个设备有多个屏幕,此时可以使用 User32 的 MonitorFromWindow 方法获取某个窗口所在的屏幕,此时根据这个屏幕的返回的 GetMonitorBrightness 判断是否支持 Dxva2 的方法如果 Dxva2 的方...
2020-07-04 01:35:56 1099 2
原创 msbuild 修改 VisualStudio 文件复制到输出目录的路径
在默认的 VisualStudio 可以右击任意的文件,让这个文件在编译时复制到输出目录,但是这个选项将会在复制到输出目录时带上这个文件所在 VisualStudio 的文件夹结构。本文告诉大家几个方法让 VisualStudio 的文件可以在编译时输出到自定义的任意路径文件夹到文件夹将整个文件夹内容输出到自定义文件夹可以使用写一个 Target 的方法如我需要将 VisualStud...
2020-07-04 00:29:25 1952
原创 dotnet 找到博客中引用已失败的链接地址
在我的博客里面会添加很多引用,但是有一大部分的链接失修,访问的时候访问不到了,或者需要更新。于是我写了一个工具,可以协助找到所有的已失败的链接本文用到工具所有代码放在 github 欢迎小伙伴访问使用方法是在参数传入博客所在的文件夹,此时将会找到所有最顶层的博客文件,接着工具将会使用正则 @"([a-zA-z]+://[^\s^:^)^""]*)" 找到所...
2020-07-04 00:29:25 381
原创 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 930
原创 为什么使用 GUID 做文件名不是好主意
在创建随机文件使用的时候,文件的命名是神坑,我看到一些代码里面使用 GUID 作为文件名,这不是一个好主意。推荐的做法应该使用 Path.GetRandomFileName 方法为什么使用 Guid 作为文件名不是一个好主意,有以下原因文件名冲突有小伙伴认为使用 Guid 作为文件名就一定不会存在冲突,不好意思,如果你是工程师,那么应该会遇到一些非酋的用户,这部分用户将会遇到使用 Gu...
2020-07-02 07:30:33 1098
原创 WPF 获取屏幕某个点的颜色
我在做一个笔迹性能测试工具,想要在笔迹绘制到某个点的时候输出绘制的速度,通过判断屏幕颜色修改判断笔迹绘制到哪。此时需要在不截图屏幕获取屏幕某个点的颜色本文的方法可以在 WinForms 等使用 using System; using System.Drawing; using System.Runtime.InteropServices; sealed class Win3...
2020-07-01 16:00:55 926
原创 C# dotnet Thread.GetCurrentProcessorId 和 CurrentProcess.Id 的区别
使用 Thread.GetCurrentProcessorId 可以获取当前线程处理器的 Id 是哪个,而通过 Process.GetCurrentProcess().Id 可以获取当前进程的 Id 号,这两个的差别从上面描述就能看出更进一步的 Thread.GetCurrentProcessorId() 方法将会缓存处理器的 Id 因此前后两次线程如果处理器切换,此时拿到的值是不对的。在...
2020-06-30 01:42:29 736 1
原创 C# dotnet 解决 Path 获取文件名路径在 Windows 构建在 Linux 执行问题
最近需要支持国产的 UOS 系统,这个系统我采用了 Xamarin 加上 GTK 开发,而我的日志系统有一个功能是记录日志的时候传入当前的文件路径,此时 NuGet 包是在 Windows 下构建的,因此传入的路径是 Window 构建服务器路径。此时在 Linux 上尝试获取文件名就炸了在 dotnet 中,可以通过 CallerFilePath 特性获取调用当前方法的文件路径是哪个,请...
2020-06-30 01:42:29 1646
原创 Blazor 的 NavLink 的 NavLinkMatch.Prefix 有啥作用
默认的 NavLink 的 Match 的默认值就是 NavLinkMatch.Prefix 表示只要当前的链接的路由的前部分和 href 的相同,那么将匹配上,修改样式为高亮本文记于 2020.06.25 也许后续也有点变更在 NavLink 的取值上有两个可选的值,一个是 NavLinkMatch.All 另一个是 NavLinkMatch.Prefix 按照官方的定义如下Nav...
2020-06-29 01:04:49 1717 1
原创 Blazor 如何使用代码跳转链接
可以通过在页面注入 NavigationManager 调用 NavigateTo 方法进行跳转根据官方文档 可以在页面注入 NavigationManager 拿到跳转的功能@page "/todo"@inject NavigationManager NavigationManager在注入 NavigationManager 之后可以在代码里面调用 Navigat...
2020-06-29 01:04:49 4653
原创 Blazor 获取当前的 Url 链接
在 Blazor 获取当前页面所在的 URL 链接可以通过 NavigationManager 类辅助获取,也可以通过此方法获取当前域名等信息首先在页面添加依赖注入,如下面代码@inject NavigationManager NavigationManager此时就注入了 NavigationManager 属性,获取当前页面所在链接的方法或域名可以采用 Uri 或 BaseUri ...
2020-06-29 01:04:49 2093
原创 Blazor 的 NavLink 提示 RZ9986 不支持复杂内容
在使用 Blazor 做动态的跳转的时候,如果在 NavLink 的 href 添加了包含 C# 代码,那么将会提示 RZ9986 组件的属性不支持复杂的内容,如混合 C# 代码和标记等。解决方法是通过按钮加上事件代替在使用如下面代码在循环里面写跳转逻辑@for (int i = 1; i < PageCount + 1; i++){ <li> ...
2020-06-29 01:04:49 872
原创 WPF 如何给 Grid 的某一行添加背景色
其实在 WPF 里面是不存在单独设置 Grid 的某一行的配色,但是想要达到这个视觉效果,可以通过 Border 配合做到使用方法很简单,假设咱创建了一个简单的 WPF 的 Xaml 界面如下 <Grid> <Grid.RowDefinitions> <RowDefinition Height="*...
2020-06-29 01:04:49 5012
原创 从 gitlab 配置管理聊聊团队项目管理
每个团队都有适合各自的管理方法,本文仅记录我现在的团队所使用的项目管理方法。本文主要聊的是通过 gitlab 的里程碑以及 git 的分支管理项目的开发和送测的代码合并问题在我现在团队开发的项目,其实是产品级。而不是项目级。什么是产品级什么是项目级,其实产品级就是作出一个面向终端用户或企业的产品。而项目级就类似接国家给出的某个项目,有明确的开发时间以及范围。这两者的管理上有极大的不同本文...
2020-06-29 01:04:49 1533
原创 C# dotnet 使用 TaskCompletionSource 让事件转异步方法
咱今天来聊聊一个毁灭世界的故事,哦,不,是一个使用 TaskCompletionSource 让偷核武器,哦,又说错了,是让事件转换为异步的方法,让咱可以在一个方法里面顺序写下毁灭世界的逻辑故事的背景是这个世界上的核导弹的发射是只要有密码就能发射,而刚好咱有一个强大的黑客团队可以窃取到密码。咱想要写一个方法,这个方法可以按照顺序发布一些指令,包括让黑客团队窃取密码,然后发射导弹,等待世界毁...
2020-06-28 00:43:48 838
原创 ASP.NET Core 解决控制台输出日志内容前面[40m等乱码字符
在默认我写了一个 WPF 程序去做管理 ASP.NET Core 进程的日志的时候,重定向输出的内容里面每一行前面都添加了很多乱码字符串。其实这是 ASP.NET Core 控制台的颜色字符,解决方法是禁用控制台颜色在看到重定向的输出里面包含以下乱码字符�[40m�[32minfo�[39m�[22m�[49m:或者如下乱码字符�[41m�[30mfail�[39m�[22m�[49...
2020-06-24 07:30:36 1460
原创 白板类应用的业务事件分发模式
在画板上延伸业务的事件,可以通过画板本身,利用路由事件分发,此时能解决依赖事件业务对具体业务对象的依赖背景先来聊聊白板应用的背景基础的白板可以认为是有一个画板 Board 而在画板上面有很多纸张页面,咱称这些纸张页面为 Slide 页面默认在画板上添加的元素,如笔迹或文本等,都是画在纸张上面的。而通过切换纸张 Slide 可以做到切换页面多的我也不讲了,因为了解这个行业的小伙伴自然...
2020-06-24 07:26:52 405
原创 WPF HandyControl 已支持给任意控件通过按下移动抬起封装点击事件
著名的 HandyControl 已经支持给任意控件通过按下移动抬起事件,封装点击事件在 HandyControl 的这个 PR 添加了 InputClickHelper 类,这个类提供了使用控件的按下移动抬起事件封装为点击事件使用方法:Install-Package HandyControl给任意控件 element 附加按下移动抬起封装点击事件,下面代码的 uiElement 是...
2020-06-24 07:26:52 1374 1
原创 UNO UnoConf 2020 在线会议 了解全平台新开发框架 零距离接触官方开发者
作为新一代的全平台开发框架 UNO 将在 2020 的 8 月 13 日进行线上举行 UnoConf 2020 在线会议,所有小伙伴都可以免费参加参加链接: https://www.eventbrite.ca/e/unoconf-2020-livestream-tickets-106050903106我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里...
2020-06-24 07:26:52 394
原创 WPF 给任意控件通过按下移动抬起封装点击事件
其实点击这个事件是可以通过按下移动和抬起三个事件封装出来的,本文提供给大家一个辅助的方法,方便给任意的控件附加点击事件在开始前需要了解一些本文点击的定义,本文点击的定义就是在按下到抬起过程中,不会出现长距离的移动,也就是从点击到抬起的点都是在一定范围内的。同时可以设置一定的时间范围,超过一定时间就是长按了,而不是点击了根据这个特点咱开始来进行一个简单的封装,在封装之前先告诉大家封装之后的使...
2020-06-24 00:24:18 1265
原创 VisualStudio 解决首次调试 docker 的 vs2017u5 exists, deleting 太慢问题
首次调试需要下载一些有趣的内容用于辅助调试,这部分内容大概有 100 多 M 在 VS 里面需要在半天。本文告诉大家如何在外面使用其他强大的下载工具下载完成之后复制回去本文特别参考了 visual studio 容器工具首次加载太慢 vsdbg\vs2017u5 exists, deleting 的解决方案 - microestc - 博客园 的方法,在此基础上做一点补充可以看到的输出窗口...
2020-06-24 00:24:18 3914 3
原创 dotnet 使用完全对象引用相等判断
默认在列表以及字典哈希这些都会先看对象是否有自己实现的等于判断,如果有就调用对象的。因此对象可以做到两个不同的对象返回相等。而如果需要判断对象引用相等,也就是只有相同的对象才返回相等,此时需要用到 ReferenceEquals 方法。这个判断方法是最快的判断相等的方法,只有在传入的两个参数是相同的对象的时候才会返回 true 的值那么如何将这个引用相等放在列表或字典哈希等的判断里面?可以看...
2020-06-23 00:36:31 505
原创 dotnet core 2 使用 DispatchProxy 做动态代理 AOP 入门
本文简单告诉大家如何在 .NET Core 里面使用 AOP 切面编程,使用 DispatchProxy 做任意接口的动态代理实现使用 DispatchProxy 有一些限制,如只能创建接口的实例。使用 DispatchProxy 可以让咱做到从无中创建出某个实例,这个实例继承咱想要的接口首先需要创建某个动态代理类继承 DispatchProxy 类,例如创建 Foo 类。此时需要实现 I...
2020-06-23 00:36:31 880
原创 Xamarin Forms 4.7 支持更简化的 Grid 行列布局写法
尽管非官方提供的 Grid 行列简化版本特别多,但是在最近这样的简写方法才被合并到了主仓库。整个 Xamarin Forms 都是开源的,任何小伙伴都可以发布自己的私有版本。也因此有很多有趣的小伙伴说,我这么好的功能就是不想放在官方,我只是用的爽就可以了。不过,也有很多小伙伴十分慷慨,我就是要放在官方,让更多的小伙伴用的爽。本文要和大家介绍的是一个用起来爽的功能我的小伙伴 Morten Ni...
2020-06-23 00:36:31 1067
原创 聊聊 2020 的 dotnet 各大开源项目仓库的情况
现在是 2020.06.21 我来聊聊我所关注的 dotnet 的几个大开源项目的活跃以及定位情况。包括 WPF 和 WinForms 和 Xamarin 和 ASP.NET Core 和 Blazor 仓库没有被点名的仓库不代表不活跃和不重要,只是我精力有限,没有参与开发。没有在局里面,不好评论现在的各个仓库的分工如下:Windows Forms 负责全平台商业化使用,主要是 Win...
2020-06-23 00:36:31 1001
原创 dotnet 为什么每个项目都会输出一个 NuGet 包而不是一个包带所有项目
在使用 dotnet 打 NuGet 包的时候会发现是每个项目都生成独立的一个 NuGet 包,通过 NuGet 引用依赖指向依赖的项目。那为什么不是我最终只打出一个 NuGet 包,这个 NuGet 包,包含了所有的项目的输出文件?每个项目独立输出是为了解决什么问题?下面让我为你解答咱不和官方文档等说原因,咱从问题出发假设咱有两个库项目分别是 A 和 B 两个项目,而 A 项目依赖 B ...
2020-06-22 00:31:32 740
原创 Roslyn 禁止 sdk style csproj 默认引用 Compile 代码文件
默认在 SDK Style 的 csproj 文件将会引用所有的 .cs 文件到 Compile 项,如果是 WPF 项目还会添加 xaml 的引用。如果想要自己手动设置,让一些项不默认引用,需要添加属性 EnableDefaultCompileItems 告诉 msbuild 不要默认引用禁止 .cs 文件作为 Compile 的默认引用方法<PropertyGroup>...
2020-06-20 00:24:40 498
原创 WPF 使用 Resharper 更改命名空间后生成文件引用找不到的命名空间
在 Resharper 更改全部命名空间之后,在 xx.g.cs 文件里面的 using 用了一个之前的命名空间,但是代码里面没有地方使用,此时构建不通过,原因是 xaml 里面存在引用在安装 Resharper 之后,可以右击某个文件夹或项目,点击 Refactor -> AdjustNamespaces 批量更改命名空间尽管 Resharper 会将大量的 xaml 的元素改对了...
2020-06-20 00:24:40 763
原创 Roslyn 如何了解某个项目在 msbuild 中所有用到的属性以及构建过程
使用 SDK Style 格式的 csproj 十分简化,但是实际上的构建过程需要用到超级多的逻辑,那么如何知道在 msbuild 所使用的构建过程有哪些,定义了那些属性。有那些 target 文件参与了这个项目构建本文告诉大家一个方法,可以输出某个项目在 msbuild 中的完全使用到的 targets 和属性等本文需要用到 -pp 这个命令。这个命令可以输出所有内联到此项目的构建过程...
2020-06-20 00:24:40 469
原创 dotnet 部署 github 的 Action 进行持续集成
被微软收购的 GitHub 现在十分土豪,提供了免费的服务器给咱构建。刚好微软对 dotnet 的支持是特别好的,毕竟还算半个自家的东西,大概只需要 3 分钟就可以在 github 上通过 Action 部署持续集成,本文以 SourceYard 作为例子告诉大家如何配置其实配置非常简单,不需要了解任何语法就可以开始写进入 github 对应的项目,可以看到 Action 选项这...
2020-06-19 00:17:33 498 3
原创 WPF 附加属性提供某个元素拥有拖拽窗口的功能
我需要窗口内的某个元素拥有拖动整个窗口的功能,也就是这个元素在拖动的时候是拖动整个窗口。而且我还开出一个有趣的方法,这个作为窗口的拖拽的元素如果是用户在元素上拖动,那么将会拖动窗口,如果用户是点击,将会触发点击事件附加属性可以给某个元素附加有趣的功能,本文的功能需要拖动元素的时候实际上是拖动窗口,第二个是元素是支持点击的拖动窗口使用的是窗口的 DragMove 方法元素支持点击用的是 ...
2020-06-19 00:17:33 554
原创 C# dotnet 提示找不到 CompositionContainer 类的解决方法
在构建提示 Error CS0012 和 Error CS0246 说找不到 CompositionContainer 类,原因是没有引用 System.ComponentModel.Composition 库在构建的时候有如下提示0>MainWindow.xaml.cs(51,59): Error CS0246: The type or namespace name 'Co...
2020-06-19 00:17:33 678
原创 WPF 两个 Topmost 的窗口如何设置谁在最上方
我需要有两个层级最高的窗口,但是要求某个窗口在另一个的上方,同时这两个窗口在所有其他的应用程序窗口的上方需要用到 SetWindowLong 的 win32 方法的设置,假设我有 A 和 B 两个窗口,我需要让这两个窗口都是 Topmost 同时 A 在 B 的上方大概逻辑如下 B.Loaded += (sender, args) => ...
2020-06-19 00:17:33 2247 2
原创 NuGet 命令行上传找不到 snupkg 文件
在 NuGet 提供符号 NuGet 库的支持,在默认上传将会同时上传符号库。在 NuGet 上传文件将会默认将 snupkg 符号文件上传让 NuGet 发布默认不上传符号文件的方法是添加参数 NoSymbols 请看代码 nuget push .\bin\release\*.nupkg -Source https://api.nuget.org/v3/index.json -Ski...
2020-06-17 16:01:52 347
原创 WPF 设置 WS_EX_TRANSPARENT 触摸失效
调用 SetWindowLong 方法给 GWL_EXSTYLE 设置 WS_EX_TRANSPARENT 让窗口透明,此时应用程序只能收到鼠标消息但收不到触摸消息最简单的 demo 是在 Load 事件添加下面代码 private void MainWindow_Loaded(object sender, RoutedEventArgs e) { ...
2020-06-17 01:29:01 910
原创 WPF 开机启动因为触摸初始化锁住界面显示
现象是设置 WPF 开机启动的时候,概率界面不显示,进程已经起来,同时占用内存极小。通过 dump 或附加调试可以看到主进程带等待触摸线程的回应在我的某个有趣的设备上,这个设备开机启动的时候将会比较慢初始化完成 USB 设备,或者说是 HID 触摸屏设备此时测试小伙伴告诉我说测试了几百次,会发现有一次某个开机启动的 WPF 应用起不来了我使用 dnspy 附加调试看到了主线程其实执行了...
2020-06-17 01:29:01 887
原创 C# dotnet 从后向前删除列表元素提升性能的原理
如果要从一个列表里面删除一些元素,如何做才能让性能比较高?答案是从列表的后面开始删起,从后到前删除在 dotnet 中的列表存放的底层是一个连续的数组。而列表在删除元素的时候,会通过移动数组的方式让整个列表的元素在内存中依然是连续的假设我有一个大的列表,此时我删除了第一项,按照上面的说法,列表就需要将后面的所有项移动一次,达到让整个列表的元素在内存是连续而如果是从后向前开始删除呢?此时...
2020-06-17 00:20:29 765
原创 Unity3D 2019 设置的 Playmode tint 有何作用
在 Unity3D 编辑器点击运行的时候,此时对整个面板修改的值仅在本次运行生效,当运行结束之后就会回到原来的值。因此为了避免调了半天实际上是在运行模式调的值,咱可以修改 Unity3D 编辑器的界面,让咱可以知道当前是 Unity3D 运行模式点击 Edit 的 Preferences 然后进入 Colors 界面此时可以看到 General 的 PlayMode tine 选项这个选...
2020-06-17 00:20:29 788
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关注的人