随笔 - 13  文章 - 7  评论 - 109  阅读 - 21609 
 
摘要: 我们很高兴地宣布 NuPack 2022 正式发布!这是一个开源项目,旨在简化 .NET 开发中的 NuGet 包发布流程。 NuPack 是什么? NuPack 是一个轻量级工具,VS扩展,它可以帮助开发者更高效地构建和发布 NuGet 包。通过简单的GUI向导,NuPack 可以自动化完成以下任 阅读全文
posted @ 2025-03-11 22:07 Cn#工作室 阅读(62) 评论(0) 推荐(0)
  2025年4月10日
摘要: 项目背景 最近开发一组类库,大约会有五六个项目。一个Core,加上若干面向不同产品的实现库,A/B/C/D...它们都依赖Core. 首先,我想统一版本号,这个容易,通过Directory.Build.props设置。 其次,每个库要单独发包。 问题是在开发阶段,子项目都是通过项目引用Core的,便 阅读全文
posted @ 2025-04-10 23:29 Cn#工作室 阅读(1130) 评论(2) 推荐(9)
  2025年3月28日
摘要: SharpUpdater是什么 SharpUpdater是一套C#桌面应用自动更新解决方案。基本上,所有自动更新程序的原理都一样:生成一份文件清单,将本地清单与云上清单对比后进行全量更新或增量更新。本方案的特点是集成了一套完整的工具链,从开发到发布。 版本历史 V1-3 (2016之前) 简单版本, 阅读全文
posted @ 2025-03-28 12:07 Cn#工作室 阅读(935) 评论(4) 推荐(6)
  2025年1月11日
摘要: 用途 个人开发,部署自己的NuGet pkg. 环境 Win11 IIS Express (轻度使用,不安装IIS,而使用VS预装的IIS Express) VS2022 步骤 开发环境准备 因我拟用NuGet.Server,它最后的版本是基于.NET Framework 4.6。传统的Web项目V 阅读全文
posted @ 2025-01-11 22:24 Cn#工作室 阅读(27) 评论(0) 推荐(0)
  2013年12月6日
摘要: SQL Prompt有一个很好用的工具叫Snippet Manager,SQL脚本片段管理器。使用它可以快速的键入一段脚本,如输入ii+Tab,即可变成INSERT INTO同理,我们可以定义一些简写如sf SELECT * FROMscf SELECT COUNT(*) FROM甚至可以定义大段的片段如游标csr:DECLARE @p1 INT,@p2 VARCHAR(20)DECLARE cursor1 CURSOR LOCAL FORWARD_ONLY READ_ONLY STATIC FOR SELECT * FROM [... 阅读全文
posted @ 2013-12-06 17:01 Cn#工作室 阅读(761) 评论(1) 推荐(0)
  2012年9月18日
摘要: EPPlus是一款功能强大的开源OpenXml Excel组件,目前国内的资料还很少,最近为了替换以前闭源的Excel2007组件(因有一些bug无法修改),作了简单的封装,用于常规的导入导出。分享一下: 1 using System; 2 using System.Data; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Web; 7 using OfficeOpenXml; 8 9 namespace CnSharp.IO.Excel 10 { 11 ///... 阅读全文
posted @ 2012-09-18 20:13 Cn#工作室 阅读(2858) 评论(7) 推荐(1)
  2011年12月26日
摘要: 1、安装TFS插件Microsoft Visual Studio Team Foundation Server 2010 MSSCCI Provider 32-bitMicrosoft Visual Studio Team Foundation Server 2012 MSSCCI Provider 32-bit2、启用TFS插件3、创建SQL Project4、现有SQL添加到项目 阅读全文
posted @ 2011-12-26 18:40 Cn#工作室 阅读(1042) 评论(3) 推荐(1)
  2011年12月25日
摘要: 此篇狗尾续狗,有炒现饭之嫌。但为了学习Spring.NET的AOP实现,同时也是响应前篇的读者,还是再选这个例子。这不,CCTV6又在放《失恋33天》,咱还写这个。Advice(通知)Spring.NET 使用标记接口 AopAlliance.Aop.IAdvice 来定义通知,这个接口又有四个直接的派生接口,还有两个间接地派生接口。Spring.Aop.IAfterReturningAdvice,定义方法执行之后的通知,通知的方法名为 AfterReturningSpring.Aop.IBeforeAdvice,定义所有的前置通知,还是一个标记接口Spring.Aop.IMethodBefo 阅读全文
posted @ 2011-12-25 22:43 Cn#工作室 阅读(2301) 评论(4) 推荐(0)
  2011年12月2日
摘要: 回首征途在上一篇《应用AOP简化WINFORM的异步操作——PostSharp实现》中,实现了通过AOP的方式隔离BackgroundWorker的调用。正如有朋友不倾向PostSharp的编译时代码织入方式,我也没在日常项目中使用过PostSharp。虽然问题可能不大,弃用它也只是重新编译一遍。但最近尝试Enterprise Library PIAB模块来实现相同的功能,还是发现了一些细节问题。一鼓作气与PostSharp不同,PIAB是以动态代理的方式来实现的。那么我们不能直接沿用Form中的代码,需要添加一个代理类来实现WorkThread。好吧,那么我们顺便引入MVP模式,通过Pres 阅读全文
posted @ 2011-12-02 00:48 Cn#工作室 阅读(2021) 评论(4) 推荐(2)
  2011年11月19日
摘要: 起因从事WinForm的园友们一定经历过:当程序需要执行一个耗时的操作时,窗体进入假死状态,然后标题栏显示一个令用户绝望的“未响应”。不明真相的用户此时可能认为程序已死,强行关闭重启程序,然后重复这个噩梦。而通常此时程序实际上已经完成了一部分业务,造成数据丢失或者产生的结果与预期不一致。针对这个case,有很多方法来解决:Thread/ThreadPool/Control.Invoke/BackgroundWorker...下面以BackgroundWorker举例:假设程序现在要执行一个耗时的操作,为了不让用户肆意猛击界面,弹出一个带有loading动画的对话框block住主界面。我们把这个 阅读全文
posted @ 2011-11-19 02:40 Cn#工作室 阅读(3007) 评论(10) 推荐(4)
点击右上角即可分享
微信分享提示