首页
学习
活动
专区
圈层
工具
发布

Excel催化剂开源第6波-Clickonce部署之自动升级瘦身之术

Clickonce无痛自动更新是我最喜欢使用VSTO开发并Clickonce部署的特性之一,但这个自动更新,通常会更新整个程序文件,包含所有的引用dll和一些资源文件等。...引用的dll文件,这个就比较难搞,经过网友师傅热心指点后,最终也实现了,此篇着重分享的也是引用dll与主程序分离,实现Clickonce自动更新时不重复下载这些未改变的dll文件。...手动更新的文件大小达30多M Excel催化剂单独更新的文件,不用Clickonce更新 可以看到引用了好多大部头的dll和资源文件,例如让Excel读写更快速的NPOI和EPPLUS库、PowerBI...引用dll文件和配置文件都不作更新 引用dll并非所有都可以分离,只有强类型签名过的dll才可以分离到其他文件夹里,不放到程序文件夹里,具体原理需要自行百度了解 这个非强类型的dll不能分离,只能复制到本地为...,都只更新核心的程序dll,其他文件尽可能地放到手动更新上让用户按需更新,最终实现了ClickOnce的自动更新模式下的升级瘦身工作。

68110

信息系统开发平台OpenExpressApp - ClickOnce智能部署

也就是说,当框架使用者使用本框架时,得到的是已经通过ClickOnce发布好的文件夹,里面有应用程序的.exe和.dll文件,而他们只能在Library和Module文件夹中添加他们自己编写的业务模型类库...:)      其它问题     由于使用了ClickOnce来实现智能客户端,所以我们在每次发布框架的时候,都会直接对没有任何业务模型类库dll的程序进行发布。...使用过ClickOnce的人就会知道,这样生成的文件夹中,会包含分别以.application和.manifest为扩展名的两个文件。...图中红框处可以添加新的文件引用。在这个工具中,同样可以对application文件中的其它属性进行修改,如Server的Url等。     这样,虽然可以使程序成功发布,但是却无法实现“智能”。...当客户程序升级后,框架使用者把升级后的dll覆盖上个版本的dll,然后调用此exe实现更新,即可自动维护application文件清单并升级ClickOnce的版本。

1.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一日一技:包含非hashable元素的列表如何去重并保持顺序?

    如果是一个包含数字的列表,我们要对它进行去重同时保持剩余数据的顺序,可以使用集合来实现: a = [2, 1, 6, 3, 2, 7, 6]dup = set()a_uni = []for element...然而,数字之所以可以放进集合里面,是因为数字是 hashable的对象。在Python中,所有不可变的对象都是 hashable的,例如数字、字符串、元组。而列表和字典不是 hashable的。...为了解决这个问题,我们需要把字典转换为 hashable的对象,此时方法有很多种,其中一种是使用 json.dumps把字典转换为JSON格式的字符串。...在Python 3.6之前,由于字典的顺序是不确定的,所以同一个字典,转换为JSON以后可能会出现顺序不一致的情况,这就会导致两个实际上相等的字典转成JSON字符串以后不相等。...移除包含非 hashable元素的列表,就可以使用JSON字符串来辅助去重: import jsona = [ {'name': 'kingname', 'salary': 99999},

    1.6K30

    无法加载 DLL xpstar.dll 或它引用的一个 DLL。原因: 126(找不到指定的模块。)。

    需要复制数据库文件,把SQL服务停了,不使用脱机或者分离是觉得比较慢,结果就是再次重启服务后,SQL开始报错:   无法加载 DLL xpstar.dll 或它引用的一个 DLL。...原因: 126(找不到指定的模块。)。...1.有人通过这个xpstar.dll重新复制到SQL Server的Binn目录解决,我对比服务器目录下和我本机(正常SQL Server)目录下所有的xpstar.dll,   按照本机的目下添加一遍没有解决.... 2.也有通过下载了SQLEXPRESS SP2的补丁后,系统报错问题得到了修复。...3.使用SQL 安装包中的修复功能解决问题的,修复过程中SQL服务会暂停,大概二十分钟左右,修复完成后,SQL不再报错。 ?

    3K31

    C#将引用的dll嵌入到exe文件中

    当发布的程序有引用其它dll, 又只想发布一个exe时就需要把dll打包到exe 当然有多种方法可以打包, 比如微软的ILMerge,混淆器附带的打包......用代码打包的实现方式也有很好,本文只是其中一种实现方式,不需要释放文件!...方法如下: 1.项目下新建文件夹dll 2.把要打包的dll文件放在dll文件夹下,并包括在项目中 3.右键文件属性, 生成操作选择嵌入的资源 4.实现如下代码, 在窗口构造中实现也可以(在窗体事件中无效...,如winform_load) 这里需要注意,“引用”下的dll,需要设置“复制本地”为False,这样在bin目录下生成exe的时候就不会顺便复制dll了(这步可要可不要) using System;...嵌入到exe程序的资源中, 并实现程序集加载失败事件(当在程序目录和系统目录下找不到程序集触发), 当找不到程序集时就从资源文件加载, 先转换为字节数组再转换到程序集返回给程序, 这样dll就被加载到程序中了

    5.5K20

    VS2008项目怎样添加“依赖(lib)”、“库目录(Libs)”、“包含目录(include)”和“引用动态链接库(dll)”

    “依赖(lib)”、“库目录(Libs)”、“包含目录(include)”和“引用动态链接库(dll)” 现在正值筒子们做毕设,但是以前项目经验少的同学会遇到一些配置的问题。...添加包含文件目录(include) [解决方案资源管理器] 项目->属性->配置属性->C/C++->常规->附加包含目录 步骤可以参考上图。...注意,经常用到的库和头文件才会用这种方式配置。 关于dll的放置问题 ---- 如果一个项目依赖的运行依赖一些特殊的dll,则会牵扯到dll的放置问题。...一般最后的的输出文件都会在Debug1中,而中间生成文件在Debug2中。 我们直接运行Debug1的可执行文件(*.exe),这需要在这个目录下面放置所依赖的dll。...我们通过VS运行或者调试程序,则需要在Debug2中放置所依赖的dll,放在Debug1中是无效的。

    2.7K30

    WinForm中ClickOnce发布至广域网

    ClickOnce智能客户端,是微软提供比较早的一项技术,用于实现WinForm开发的应用程序能够自动更新,省去给每台客户端升级带来的困扰。   从网上的贴子里看,有的说好用,有的说不好用。...客观的说,微软的东西其实都很好用的,不好用的原因是我们不会用。微软技术是上手容易,精通难,需要不断的摸索和研究,才能灵活运用。当然,我不是微软的水军,但我是用Net开发。。。...不懂的童鞋可以详细阅读,我也不用粘贴复制,这样太没技术含量了 ClickOnce部署 ClickOnce部署Winform程序的方方面面   下面介绍下我在使用过程中遇到的问题和总结。...注意:若某些引用的Dll文件没有被使用,是可以被排除的。这样打包的时候,就不会打进去。注意:发布状态这下选项,每个选项功能是不同的   步骤3:设置更新位置。即是广域网中站点的下载地址 ?  ...经过上述几个步骤的设置,点击发布,发布就成功了。如下图所示 ?   但我们在广域网上下载时,还是会提示下载失败,原因:下载的地址还是局域网内的地址。

    2.5K70

    C# 搭建自己的NuGet服务器,上传自定义NuGet包

    在VS中修改NuGet引用路径 注意把自定NuGet放在首位,这样每次搜索都默认从MyNuGet开始。 以上就成功部署了自己的NuGet服务器了。...关于.nupkg文件其实就是程序的安装包压缩文件,它包含了程序包的版本信息,dll及相关的外部依赖,NuGet安装包时会进行自动解压。...第二步 如何进行打包 通过图像工具进行打包,下载地址https://npe.codeplex.com/downloads/get/clickOnce/NuGetPackageExplorer.application...打包操作 打开NuGet Explorer 如何修改之前已经打好的包 修改包只需要删除之前Package contents中的dll引用 重新的添加然后保存即可。...相关文档: NuGet官方文档:http://docs.nuget.org/ 总结: NuGet服务器可以非常方便的管理程序中所使用到的外部引用 通过NuGet自动恢复功能不仅可以清理项目中不需要的外部依赖

    1.2K20

    C# 搭建自己的NuGet服务器,上传自定义NuGet包

    发布该网站,并部署至IIS 将.nupkg文件发布至网站的Packages目录。 在VS中修改NuGet引用路径 ? 注意把自定NuGet放在首位,这样每次搜索都默认从MyNuGet开始。...以上就成功部署了自己的NuGet服务器了。关于.nupkg文件其实就是程序的安装包压缩文件,它包含了程序包的版本信息,dll及相关的外部依赖,NuGet安装包时会进行自动解压。...第二步 如何进行打包 通过图像工具进行打包,下载地址https://npe.codeplex.com/downloads/get/clickOnce/NuGetPackageExplorer.application...如何修改之前已经打好的包 修改包只需要删除之前Package contents中的dll引用 重新的添加然后保存即可。 NuGet自动恢复功能 通过命令方式编译项目是如何自动恢复NuGet包?...相关文档: NuGet官方文档:http://docs.nuget.org/ 总结: NuGet服务器可以非常方便的管理程序中所使用到的外部引用 通过NuGet自动恢复功能不仅可以清理项目中不需要的外部依赖

    2.4K50

    VB.NET 把引用的DLL打包到exe里面,制作绿色软件

    VB.NET 把引用的DLL打包到exe里面,制作绿色软件   今天以大家常用DLL"Newtonsoft.Json"为例给大家做个示范; 1、第一步新建项目 2、第二步,新建项目后,在窗体添加一个按钮...Button和两个富文本框RichTextBox 3、第三步,VS->工具->NuGet包管理器->管理解决方案的NuGet 程序包->浏览->搜索(Newtonsoft)->安装第1个即可 4、第四步...,在项目引用里面找到Newtonsoft引用然后把属性“复制到本地改为False” 5、第五步,在项目上面右击鼠标打开项目属性 6、第六步,在项目属性->资源->添加资源->添加现有文件;然后在项目目录...packages->Newtonsoft.Json.13.0.1->lib->net45(根据项目框架选择)->Newtonsoft.Json.dll选择对应的dll文件添加到资源里面 7、第七步,编写测试代码...代码重点来咯 Public Sub New() ''加载DLL到exe的事件 AddHandler AppDomain.CurrentDomain.AssemblyResolve

    3.6K30

    RavenDB文档建模--琐碎的注意事项--文档的引用处理、包含以及加载

    这篇文章比较简单,在这个专题的一开始,我们探究了对象和文档之间的关系,我们只是专注于构建模型,忽略了跳过我们如何在图表阶段之外处理关系。那么这一小篇文章我们就来简单的说一下这个问题。...我们需要考虑两个单独的操作。在查询和加载文档期间获取相关信息可以使用Include调用来完成,这时一个非常常用的功能,因为他可以减少请求服务端的次数。...第二个操作是查询,也就是说当想根据相关文档的属性查询特定文档。例如前面文章所说的幼儿园的例子,查询母亲叫刘妈妈的孩子,由于子文档不再包含父级文档的名称,那么我们将如何搜索它呢?...因此使用这个功能通过母亲的名字查询孩子非常容易。索引功能将在索引专题中进行进一步讲解。我在这里提到它,是因为知道它的存在会影响我们对数据建模的方式,在决定如何对相关数据进行建模时,它可以有很大的帮助。...但是最终决策几乎总是归结为我们是想要数据的时间点视图还是当前值。对于第一个选项,我们通常会将值从源复制到其自己的文档中,对于第二个选项,我们可以在索引和查询以及从服务器获取数据时使用。

    43150

    DLL植入漏洞分类与微软安全响应指南

    目录(通过GetWindowsDirectory函数获取路径)当前工作目录(CWD)PATH环境变量列出的目录(但不包含App Paths注册表键指定的应用专属路径,该键在运行时不会用于DLL搜索)默认...应用程序目录中的DLL植入应用程序目录是应用程序存放非系统DLL依赖并视其为可信的位置。安装目录中的文件被推定为无恶意且可信,通常通过目录ACL进行安全控制。...例如,从互联网下载并在默认“下载”文件夹中运行的安装程序(含可再发行包、ClickOnce生成的setup.exe、IExpress生成的自解压存档等)。...若PATH包含任意用户可写目录,则属严重问题(远超单一DLL加载实例),我们会按严重级处理。但若仅涉及DLL植入,由于无法借此突破安全边界,被视为低安全性问题。...微软不处理的内容(非漏洞) PATH目录场景:PATH中所有目录均需管理员权限,故无法被利用。

    18910

    临时变量作为非const的引用进行参数传递引发的编译错误

    其中文意思为临时变量无法为非const的引用初始化。也就是在参数传递的过程中,出现错误。...当这个临时对象传递给非const的string&引用类型时,因为非const引用绑定对象时,要求该对象也是非const对象。而在这时,因为string类型的临时对象是const对象,所以就出现错误。...---- 2.所有的临时对象都是const对象吗 为什么临时对象作为引用参数传递时,必须是常量引用呢?很多人对此的解释是临时对象是常量,不允许赋值改动,所以作为非常量引用传递时,编译器就会报错。...这个解释在关于理解临时对象不能作为非const引用参数这个问题上是可以的,但不够准确。...IntClass(6)表示生成一个无名的临时对象,传递给非const引用,在print函数中通过引用修改了这个临时对象。这说明了并非所有的临时对象都是const对象。

    3.4K31

    Unity3D 入门:为 Unity 的 C# 项目添加 dll 引用或安装 NuGet 包

    不过,对 Unity C# 项目来说,你并不能直接引用 dll,也不能直接使用自带的 NuGet 包管理器完成 NuGet 包安装。 本文介绍原因和真正的引用方法。...Unity 中引用 dll 有两种官方途径: Assets\csc.rsp 文件,用于指定引用 .NET 运行时的 dll Assets\Plugins 文件夹,用于指定引用单独的 dll 文件 当然,...你也可以使用同样的方式引用其他的 dll,每行一个。...在 Assets 文件夹中新建 Plugins 文件夹,然后将你希望引用的 dll 丢进去就完成了。 引用 dll 因此,如果你已经拥有了 dll 了,那么直接往 Plugins 文件夹扔就好了。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

    5.3K20
    领券