lindexi

林德熙 - 微软最具价值专家和 .NET 基金会成员

林德熙

Xamarin iOS 部署版本大于手机的系统版本

我觉得苹果肯定会坑我,如果我敢更新我的手机系统的话。苹果觉得像我这样的开发者就应该拖出去打靶,整个手机没几个应用是从应用商店下载的。但是作为开发者,我在使用 Xamarin 部署我的云输入法,在第一步创建的时候需要我使用 XCode 新建一个项目,而新建的项目默认都是需要使用更新版本的系统,此时部署将会失败。本文告诉大家一个简单的方法解决这个问题

Xamarin iOS 部署项目提示 Failed to register bundle identifier 失败

这是我在开始部署其他小伙伴的 Xamarin 项目时,在 VS 上提示的失败如下: Failed to register bundle identifier: The app identifier “com.walterlv.CloudKeyboard” cannot be registered to your development team because it is not available. Change your bundle identifier to a unique string to try again 。 这个提示的提示就是 Bundle Identifier 不对,原因有很多个,本文将一一告诉你

Xamarin XamlCTask 任务不支持 ValidateOnly 参数

使用 Xamarin 项目,添加一个额外的库项目,被 Xamarin.Form 引用,构建时提示“XamlCTask”任务不支持“ValidateOnly”参数。请确认该参数存在于此任务中,并且是可设置的公共实例属性

Xamarin 使用 GTK 提示找不到 libglib-2.0-0.dll 找不到

在使用 Xamarin 开发 Linux 应用的时候,刚开始如果没有弄好 libglib-2.0-0.dll 的依赖库,那么将会在运行的时候,在 Gtk.Application.Init() 这句代码提示找不到这个库

Xamarin Forms 进度条控件

本文翻译:http://xamlnative.com/2016/04/14/xamarin-forms-a-simple-circular-progress-control/ 里面都是胡说的,如果看不懂可以联系邮箱 源代码:https://github.com/billreiss/xamlnative/tree/master/XamarinForms/CircularProgress 最近作者需要做一个简单的圆形的等待控件在一个Xamarin Forms应用,效果可以看 这里写图片描述

Xamarin Forms 4.7 支持更简化的 Grid 行列布局写法

尽管非官方提供的 Grid 行列简化版本特别多,但是在最近这样的简写方法才被合并到了主仓库。整个 Xamarin Forms 都是开源的,任何小伙伴都可以发布自己的私有版本。也因此有很多有趣的小伙伴说,我这么好的功能就是不想放在官方,我只是用的爽就可以了。不过,也有很多小伙伴十分慷慨,我就是要放在官方,让更多的小伙伴用的爽。本文要和大家介绍的是一个用起来爽的功能

Xamarin Forms 构建 WPF 版项目失败提示 XamlC error XFC0000 错误

在 Xamarin Forms 从 4.7 到 4.8.0.1560 版本,在 Xamarin Forms 构建 WPF 版项目也许会提示 XamlC error XFC0000 : Cannot resolve type “Application” 构建失败

为什么使用 GUID 做文件名不是好主意

在创建随机文件使用的时候,文件的命名是神坑,我看到一些代码里面使用 GUID 作为文件名,这不是一个好主意。推荐的做法应该使用 Path.GetRandomFileName 方法

为何 WPF 对 vcruntime140 有引用

通过阅读 WPF 官方开源仓库的代码和文档,可以了解到在进行独立发布的时候会在仓库里面带上 vcruntime140 的原因

为何 C# 的指针不是可空类型

在 C# 里面的指针实际上使用 int32 或 int64 存储,在 C# 里面的指针需要开启不安全代码才能使用,这里的指针是一个结构体,而结构体是存在值的

WPF 从零手动创建承载 Xamarin Forms 项目

现在完全开源的 Xamarin Forms 是支持使用 WPF 进行承载,也就是使用 Xamarin 开发的控件等是可以在 WPF 项目使用的。本文来告诉大家如何在 WPF 中运行 Xamarin Forms 项目,让 Xamarin Forms 构建为 WPF 应用

WPF 绑定继承的样式提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式

在 WPF 中,如果有一个样式是继承另一个样式,而样式没有使用 TargetType 那么在运行的时候会提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式

聊聊 2020 的 dotnet 各大开源项目仓库的情况

现在是 2020.06.21 我来聊聊我所关注的 dotnet 的几个大开源项目的活跃以及定位情况。包括 WPF 和 WinForms 和 Xamarin 和 ASP.NET Core 和 Blazor 仓库

Roslyn 如何了解某个项目在 msbuild 中所有用到的属性以及构建过程

使用 SDK Style 格式的 csproj 十分简化,但是实际上的构建过程需要用到超级多的逻辑,那么如何知道在 msbuild 所使用的构建过程有哪些,定义了那些属性。有那些 target 文件参与了这个项目构建 本文告诉大家一个方法,可以输出某个项目在 msbuild 中的完全使用到的 targets 和属性等

WPF 给任意控件通过按下移动抬起封装点击事件

其实点击这个事件是可以通过按下移动和抬起三个事件封装出来的,本文提供给大家一个辅助的方法,方便给任意的控件附加点击事件

How to generate NuGet package with Git Tag version using GitHub Action

We can trigger the GitHub Action by Git tag pushed and we can read the Git tag name as the version. And then we can generate the NuGet package with this version.

GitHub 的 Action 如何禁用

我 Fork 了小伙伴的 ant-design-blazor 仓库,这个仓库设置了每天自动同步样式,这个 Action 用到了源仓库的密钥,在我 Fork 的仓库一定跑不通过,于是每天我就收到一次构建不通过的信息。本文告诉大家如何禁用自己 Fork 的某个仓库的 Action 的执行

GitHub 的 Action 判断仅在主仓库才执行脚本

我有一个 GitHub 项目,这个项目配置了仅需要在源仓库才能执行的 Action 如推送 NuGet 等发布动作。如何在 Action 里面设置让 Fork 的仓库不执行 Action 的步骤

WPF 画布工具栏的可扩展设计

我在写一个和 PS 差很多的工具,这个工具中间有一个画布,而我需要写一个扩展很好做的工具栏集合,这个工具栏设计上需要支持可以让小伙伴愉快的拆卸,功能足够独立,使用方便。本文就来告诉大家我的这个设计方案

MSBuild 输出日志可视化工具 MSBuild Structured Log Viewer 简介

感谢 Vatsan Madhavan 小伙伴推荐的 MSBuild 输出日志可视化工具,这个工具可以使用漂亮的 WPF 界面预览 MSBuild 复杂的输出内容

dotnet 使用 OpenXML SDK 解析 Office 的项目符号 buNone 含义

在解析 PPT 文档的时候,文本是比较复杂的一部分,而因为很多有趣的坑,即使是微软大法也有一些诡异的设计,例如项目符号的是否显示

Roslyn 如何使用 MSBuild ZipDirectory 压缩文件夹

在 csproj 文件或在 NuGet 的 Targets 文件中可以通过 Target 调用 ZipDirectory 任务用来制作压缩包,在构建的时候,可以用这个方法将某个输出文件夹等内容压缩输出

WPF 如何在静态资源定义字体大小

默认的 WPF 的字体大小的单位是像素,如果想要将字体大小使用 pt 点表示,写在 xaml 里面是直接添加 pt 后缀。但是此时如果在静态资源尝试定义的时候写上了 pt 将会在运行的时候提示无法转换

dotnet 配合 Gitlab 做自动推 Tag 时打包 NuGet 包

我现在的团队内部用的是 Gitlab 工具,在此工具上提供了 Gitlab CI CD 用于做自动化测试和构建。对于 CBB 来说,发布就是打出 NuGet 包然后上传到内部 NuGet 服务器。此时遇到的问题是,如何在 Gitlab 上执行打包,打包的时候如何指定 NuGet 包的版本号。因为 CBB 的特殊性,我要求每个 NuGet 正式发布的包都应该有一个对应的 Tag 号,这样将 NuGet 库安装到项目里面,之后发现问题了还能找到对应版本的代码 本文告诉大家如何配合 Gitlab 做自动推 Tag 时打包 NuGet 包。也就是本地打一个 Tag 号,推送到 Gitlab 上,就会出发 Gitlab 的自动构建,自动构建里面将会获取 Tag 版本号,然后打出 NuGet 包推送到服务器

Roslyn 如何给每个平台设置 PlatformTarget 属性

在使用 csproj 格式,如果需要给不同的平台设置 PlatformTarget 对应平台的值,需要写比较多的代码,本文告诉大家一个简便的方法

编程思想 定义过滤的方式解耦

本文将会很少涉及 dotnet 的知识,主要讲用定义过滤的方式解除过程业务的耦合。在一些业务上,可以从业务层面或逻辑层面明显分为几层,每一层之前的数据相互依赖或处理顺序相互依赖,但逻辑都独立。此时如果将业务处理放在过程处理里面,将会让过程处理耦合具体业务。而定义过滤的方式为让过程逻辑只是搭建框架为主,具体业务通过注入过滤的形式加入到处理

程序猿修养 使用 NuGet 发射卫星只需要三步

软件行业和其他行业不相同,在很多行业想要复用前人的知识,需要重新再制造一遍。而软件行业,特别是 dotnet 系的技术,想要用前人的经验只需要使用前人写的库。随着越来越多的基础设施和底层库的积累,现在开发一个软件的速度会越来越快。在使用 dotnet 技术栈时,可以通过 NuGet 方便使用前人的库或发布自己的库和工具。有很多功能,其实只需要知道用哪个库和如何用,底层细节可以在完全不知道不了解的情况下也能用起来

程序猿修养 从安装 dotnet 开始

本来程序员的开始应该是从命令行开始,但是能看到博客的小伙伴,预计都了解命令行了。但是如果是一个空命令行,能做的事情实在不够清真,能提升的效率也有限。如何站在巨人的键盘(没写错)上,用大佬写的各个工具提升日常逗比的效率?答案是从安装 dotnet 开始

github 设置自动删除合并的分支

在 github 上提 MR 在合并之后的分支,很少需要继续保存,如果真的有需求,建议使用 tag 保存,而在合并之后不需要这个分支,默认的 github 不会删除这个分支

WPF 给应用程序添加水印

我有一个应用,我想要在应用上添加水印,这个水印可以如何做

Github 添加 Action 编译图标

在我的仓库里面,可以在首页添加图标显示当前是否编译通过

dotnet tool 判断博客文档链接是否可用的工具

本文来和大家安利一个好用的工具,通过这个工具可以找到自己博客文档里面,是否存在有链接已经失效了

.NET 官方图标

在哪可以找到 dotnet 官方权威的图标?正统的 .NET 图标是哪个? 本文来回答大家这几个问题

dotnet 在 GitHub 的 Action 上部署自动代码编码规范机器人

我们的项目中会包含有很多文件,但是可能我们没有注意到的,我们的文件的编码不一定是 UTF-8 编码,这就可能让构建出来的应用程序在别人电脑运行时出现乱码,或者别人拉下来代码,却发现代码里面的中文都是乱码。为了解决文件编码的问题,咱需要一个编码规范工具,本文将告诉大家在 GitHub 上仓库,可以利用 GitHub 的 Action 部署自动代码文件编码规范的机器人,这个机器人可以自动协助咱规范文件的编码规范。可以设置为每次上传代码的时候,自动帮忙设置文件编码为 UTF-8 编码。或者在每次代码合并到主分支之后,机器人将会尝试修复文件的编码,如存在文件需要修复的,那机器人将会创建一个代码审查