.Net Framework

.NET 程序下锐浪报表 (Grid++ Report) 的绿色发布指南

谁说我不能喝 提交于 2020-10-11 00:57:32
原文: .NET 程序下锐浪报表 (Grid++ Report) 的绿色发布指南 .NET 程序下锐浪报表 (Grid++ Report) 的绿色发布指南 在锐浪报表官方为 CSharp 编写的开发文档:“在C#与VB.NET中开始使用说明.txt” 中,关于发布项目是这么描述的: ★发布你的项目,用VS.NET制作安装程序: 1、先创建安装项目:在解决方案资源管理器的根节点上点右键,在弹出的菜单里执行“添加->新建项目…”,创建一个“安装项目”。 2、加入项目发布文件:在解决方案资源管理器的新创建的安装项目节点上点右键,在弹出的菜单里执行“添加->项目输出…”,在打开的窗口里选择“主输出”,这样可以把程序的发布文件自动加入到安装项目中。 3、设置Grid++Report的DLL文件为COM自注册:分别设置“gregn6.dll”与“grdes6.dll”的“Register”属性为“vsdrfCOMSelfReg”。 C:\Grid++Report 6\Samples\CSharp\在C#与VB.NET中开始使用说明.txt 这种方式需要我们在运行程序之前将 Grid++Report 依赖的 COM 组件注册到操作系统中。有没有办法可以做到绿色发布呢? 以 C:\Grid++Report 6\Samples\CSharp\1.Tutorial\PrintReport

解析大型系统自动更新

我们两清 提交于 2020-10-11 00:32:34
C/S架构的应用程序需要支持自动更新功能,当新版本程序发布后,正在运行的客户端能检测到新版本的程序,通知用户是否下载更新。工作以来参与过几个自动更新模块的设计与维护,撰文总结自动更新模块设计与实现。 自动更新组件主要内容 1 版本比较。旧版本如何检测到新版本,版本信息是程序集自描述的,还是用单独的文件保存。.NET程序集是自描述的,程序集包含以下几种版本信息,每个Assebmly包含三个Version AssemblyFileVersion : 存储在Win32资源中, CLR不关心这个版本号。 AssemblyInformationnalVersion :存储在Win32资源中, CLR不关心这个版本号。 AssemblyVersion: 存储在AssemblyDef manifest metadata table中,CLR会使用这个版本号。 标准版本号物理形式表示为用句点隔开的四段数字,如下面的代码示例所示。 <major version>.<minor version>.<build number>.<revision> 实际使用中,我们一般只用到前面三段。即 <major version>.<minor version>.<build number> 版本比较举例: 旧版本 2.4.1.2 新版本 2.4.1. 3 或 2.4. 2 .2 或2. 5 .1.2。 2

BeetleX之TCP消息通讯Protobuf/TLS

我是研究僧i 提交于 2020-10-10 22:47:01
在网络通讯应用中直接操作数据流是比较繁琐的事情,毕竟在业务层面处理的都是对象化消息;为了让网络数据操作变得更友好直观,一般都会引用序列化组件来处理网络流和对象之前的转换工作;在这里介绍组件如何使能Protobuf进行数据交互通讯。 协议定义 组件使用对象处理就不同之前HelloWorld示例一样简单操作流就可以,在这里需要进一步封装一个简单的应用协议。 |-----------------------------------------------------------------| |0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7 | |----------------------------------------------------------------| |Probobuf数据流长度,占4字节 | |----------------------------------------------------------------| |Protobuf数据流 | |----------------------------------------------------------------| 以上是一个简单的应用协议,消息头4字节描述消息的长度

uniapp安卓判断通知权限(并通过版本进行设置跳转)

不羁岁月 提交于 2020-10-10 14:09:37
var main = plus.android.runtimeMainActivity(); var pkName = main.getPackageName(); var uid = main.getApplicationInfo().plusGetAttribute("uid" ); var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat" ); var areNotificationsEnabled = NotificationManagerCompat.from(main).areNotificationsEnabled(); // 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置 if (! areNotificationsEnabled) {   uni.showModal({     title: '提示' ,     content: '请先打开APP通知权限' ,     showCancel: false ,     success: function (res) {       if (res.confirm) {         var Intent = plus

这四个技巧帮您更有效使用Github

感情迁移 提交于 2020-10-10 02:10:25
导读 作为一个非常喜欢GitHub的程序员,我在日常使用中发现了这4个技巧,可以提高我使用GitHub的效率。这篇文章介绍并演示了这4个技巧,我希望它们也能帮助你更有效地使用GitHub。 技巧1:用文件查找器快速、轻松地搜索仓库中的文件 GitHub提供使用Git进行软件开发和版本控制的托管,有数千个存储库、项目和文件。因此,如何高效地在GitHub上搜索文件是非常重要的。第一个技巧是使用GitHub在仓库中提供的快捷方式搜索仓库中的文件。 如上图所示,在运行时的仓库页面,按键盘上的 t 键,那么GitHub就会激活文件查找器。然后你只需要输入目标文件名,比如ServiceProvider.cs 文件,文件查找器就会显示你想要的文件。 技巧2:使用搜索限定词搜索你想要的目标 现在,假设你不知道目标文件位于哪个仓库中,或者你想在组织中查找某个用户。然后,你可以使用搜索限定词在GitHub的任何页面上搜索所需的目标。 如你在上面看到的,我们在Marketplace页面上,并希望在dotnet组织中搜索ConfigurationBuilder.cs文件。然后,你只需要输入搜索限定词即可表明此目的。 org:dotnet filename:ConfigurationBuilder.cs GitHub就会显示你想要的文件。 技巧3:在Github个人资料页面上启用自述文件 是的

了解.NET Core代码保护工具.NET Reactor内置工具,让你的工作效率猛增!

安稳与你 提交于 2020-10-10 00:29:51
.NET Reactor 是一个功能强大的代码保护和软件许可系统,适用于为.NET Framework编写的软件,并支持生成.NET程序集的所有语言。 .NET Reactor迎来了久违的版本更新,进入v6.3.0.0全新时代!支持Blazor保护,支持.NET 5 Preview 4保护,允许创建.NET Core 3.x单个文件应用程序,改进了许多功能性能,等等10个功能的更新和改进,还没有体验的朋友可 立即下载 。 本文将介绍.NET Reactor的内置工具,希望对您有所帮助。 许可证审查员工具 许可证检查器允许您从打开的许可证文件中查看其他许可证信息。为此,您必须通过选择生成受保护程序集和许可证的.NET Reactor项目来加载正确的主密钥。 可以使用.NET Reactor SDK以编程方式读取许可证信息(随.NET Reactor一起提供,请参见位置“ ... Eziriz \ .NET Reactor \ SDK \ License Examination”)。 许可证失效工具 如果部署硬件标识锁,则可以使用许可证无效工具强制在一台计算机上使许可证无效,以允许被许可方将安装移动到另一台计算机上。 要强制执行无效操作,请加载.NET Reactor项目,打开许可证无效工具,然后单击“创建无效工具”。这将创建一个可执行文件

c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Asyn...

≡放荡痞女 提交于 2020-10-10 00:27:59
c#中@标志的作用 参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/tokens/verbatim 1、在变量名前加@,可以告诉编译器,@后的就是变量名。主要用于变量名和C#关键字重复时使用。 string[] @for = { "John", "James", "Joan", "Jamie" }; for (int ctr = 0; ctr < @for.Length; ctr++) { Console.WriteLine($"Here is your gift, {@for[ctr]}!"); } // The example displays the following output: // Here is your gift, John! // Here is your gift, James! // Here is your gift, Joan! // Here is your gift, Jamie! 2、在字符串前加@,字符串中的转义字符串将不再转义。例外:""仍将转义为",{{和}}仍将转义为{和}。在同时使用字符串内插和逐字字符串时,$要在@的前面 string filename1 = @"c:\documents\files\u0066

我又踩坑了!如何为HttpClient请求设置Content-Type标头?

a 夏天 提交于 2020-10-09 18:52:08
最近在重构认证代码,认证过程相当常规: POST /open-api/v1/user-info?client_id&timstamp&rd=12345&sign=***&method=hmac content-type: application/json payload: { "token":"AA2917B0-C23D-40AB-A43A-4C4B61CC7C74"} 平台显示 :签名校验失败, 排查到平台收到的Post Payload并非预期,阅读本文,解锁正确使用Content-Type标头的姿势。 1. 入坑 下面是构造HttpClient对象、发起请求的代码: // 初始化HttpClientFactory context.Services.AddHttpClient("platform", c => { c.BaseAddress = new Uri("https://alpha-engage.demohost.com/"); c.DefaultRequestHeaders.Accept .Add(new MediaTypeWithQualityHeaderValue("application/json")); })... // 产生命名HttpClient,发起请求 var client = _clientFactory.CreateClient("platform"

体验.NET5 RC1极致性能,你也要“卧槽”!

梦想与她 提交于 2020-10-09 11:25:10
“ 9月14日,.NET5发布了(Release Candidate)RC1版本,是11月正式版本之前两个RC版本中第一个,包含语言新版本C#9和F#5,需要用Visual Studio 2019 (v16.8, Preview 3)才能使用,注意不是Visual Studio 2019,二者可以并存安装。 ” 文:Yiru-Chen 来源:DotNetdaily (文章底部附安装包和激活码) 相对于.NET Core3.x,做出了很多改进: 1 单文件可执行应用程序 2 更小的容器映像 3 更强大的JsonSerializer api 4 BCL nullable reference type annotated 5 新target framework names, 6 对Windows ARM64更好的支持。 其中最被人称道的是.NET5里面GC和JIT性能大幅提升,ARM64重点性能优化带来了更好的吞吐量和更小的二进制文件,对容器技术更好的支持,远远领先于其他平台语言!怀揣着憧憬与好奇,我准备动手实践下,数据说话!动手前,先展望一下。 DotNetdaily .NET5,完成统一 微软2019全球开发者大会上正式宣布的.NET5,其主要目标之一是提供一个单一的、跨平台的.NET 运行时和具有统一运行时行为和开发者体验的框架。在第一次宣布这个项目时,.NET 团队的程序经理

SVN 向 GIT 进行转换如何拉取所有提交记录

隐身守侯 提交于 2020-10-09 02:32:48
如果你只想拉取 Trunk 分支的提交记录的话。 我们以项目 https://sourceforge.net/p/docutils/code/HEAD/tree/trunk/docutils/ 为示例 我们希望将上面项目的所有 Trunk 的提交记录变成 Git 的仓库。 你可用运行命令: git svn clone https://svn.code.sf.net/p/docutils/code/trunk docutils 进行拉取就可以了。 请注意,如果你的提交记录非常多的话,有可能会拉取失败,如果你的计算机网络状况不是非常好,或者你计算机有自动休眠功能的话,也会拉取失败。 建议你在服务器上做,那么的效率会更高。 我们因为网络问题就没有拉完成。 https://www.ossez.com/t/svn-git/186 来源: oschina 链接: https://my.oschina.net/honeymoose/blog/4318015