C# 程序发布 时如何整合所需文件夹及dll、xml文件使不易看到

.Net技术 码拜 10年前 (2014-12-02) 4967次浏览 0个评论

C# 程序发布 如题。因为编写过程中使用到第三方控件和其他引用,执行目录下有比较多的文件夹和dll、xml文件,请教有什么方法将它们统一整合起来,既方便传送,同时让部分文件也没这么容易直接看得到。感谢!
—-
30分 xml文件应该不少是文档,可以删掉。dll一般做法是可以在config里面设置probe的路径,把有些第三方库放到子目录下。如果是想隐藏一些依赖的dll,试试 LibZ 这个工具,它可以把依赖的dll压缩后作为资源注入主程序。如果依赖的程序集很多,或者有多个主程序共享dll,它也可以把dll压缩打成一个或多个包,向主程序注入对这些包的依赖。当然这种做法不一定能处理所有情况,所以需要再测试下打包后的程序。不过这个工具的修改比较小,要比ilmerge和一些混淆工具的注入更不容易出错。(注意如果你的程序有强命名被改动后需要让它重签名)如果还想打包资源文件,就没有那么现成的工具了。这需要程序里有一个文件系统抽象层,对资源文件的加载都使用这个抽象层,然后就可以把资源打包到一起,由文件系统抽象层的实现来从包里加载。还有另一种办法是通过应用虚拟化的方式打包,这是可以把所有文件和依赖都打包到一起的,不过这就导致程序运行的环境已经不是实际的操作系统了,一般场景下不建议用。最后呢,这种需求一般都是开发人员的强迫症,在这个上面费不少功夫其实没多大价值。
—-
制作成自解压程序(EXE)
—-
不是可以直接把引用的DLL发布到程序中么?
—-
VS自带publish(发布)功能,它会将必须的dll发布到指定位置(在config中声明了dll的不会被打包,这点要注意,第三方控件一般会在使用时自动修改config配置,这时候最简单的办法就是在目标电脑上也安装下第三方控件,复杂的方法就是从config中移除这些配置,然后一步一步调)
—-
引用 1 楼 github_22161131 的回复:xml文件应该不少是文档,可以删掉。
dll一般做法是可以在config里面设置probe的路径,把有些第三方库放到子目录下。如果是想隐藏一些依赖的dll,试试 LibZ 这个工具,它可以把依赖的dll压缩后作为资源注入主程序。如果依赖的程序集很多,或者有多个主程序共享dll,它也可以把dll压缩打成一个或多个包,向主程序注入对这些包的依赖。
当然这种做法不一定能处理所有情况,所以需要再测试下打包后的程序。不过这个工具的修改比较小,要比ilmerge和一些混淆工具的注入更不容易出错。(注意如果你的程序有强命名被改动后需要让它重签名)如果还想打包资源文件,就没有那么现成的工具了。这需要程序里有一个文件系统抽象层,对资源文件的加载都使用这个抽象层,然后就可以把资源打包到一起,由文件系统抽象层的实现来从包里加载。还有另一种办法是通过应用虚拟化的方式打包,这是可以把所有文件和依赖都打包到一起的,不过这就导致程序运行的环境已经不是实际的操作系统了,一般场景下不建议用。最后呢,这种需求一般都是开发人员的强迫症,在这个上面费不少功夫其实没多大价值。感谢各位的回答,但只有这位朋友准确理解了我的意思。而且,很赞同你的最后一句话


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# 程序发布 时如何整合所需文件夹及dll、xml文件使不易看到
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!