摘要: .Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布 .Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing .NET Core 3.0 .NET Core是一个跨平台,高性能,开放源代码框架,用于构建现代的, 阅读全文
posted @ 2019-09-30 17:46 霜天雪舞 阅读(9826) 评论(1) 推荐(8) 编辑

C# 版dll 程序集合并工具

     最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件。网上找了一些资料。

 1.       使用 Costura.Fody ,这个强大之处是可以在build阶段直接将依赖的DLL合并在目标EXE中,支持非托管DLL进行mixed mode 打包,不足之处是

只能将DLL合并到EXE中,不支持DLLDLL的合并,目前满足不了我的需求。

参考资料 http://www.cnblogs.com/instance/archive/2015/10/09/4863811.html

Costura.Fody    github地址:https://github.com/Fody/Costura

      Costura.Fody 是使用场景:最终发布只有一个EXE,将依赖的DLL合并到一个EXE中。

 

2.    微软的ILMerge工具。

下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=17630

这个支持EXE依赖的DLL合并到EXE中,也支持将主DLL依赖的其他DLL合并到一个DLL,这个基本满足要求,唯一不足之处是没有GUI,每次使用敲命令很不方便,于是继续寻找,有ILMergeGUI

 

3.      ILMergeGUI

地址:http://ilmergegui.codeplex.com/

这个代码下载下来编译都不通过,也不好用,看来还是自己动手丰衣足食。

 

4. 自己开发ILMergeGUI 

微软的ILMerge需要安装才能使用,结合Costura.Fody可以将ILMerge合并到自己开发的工具中,并且无需安装ILMerge.

 

 

说明:

1.       当主文件为dll时,合并导出的文件为 DLL,当主文件类型为exe 时,合并后的文件为exe;

2.      . 列表里面的dll文件为主文件的依赖文件;

3.       CLR版本支持v1v1.1 v2v4,注意要与主文件及相关文件CLR版本一致;

            勾选日志输出,会在工具目录生成日志文件。

 

       ILMerge关键API

public void SetInputAssemblies(string[] assems);

设置输入的程序集,每一项为程序集包含文件绝对路径的全名,其中参数第一个程序集为主程序集。必须在调用Merge()之前设置。

 

public string OutputFile { get; set; } 

获取或设置合并后生成的文件名,必须在调用Merge()之前设置。 

 

public void SetTargetPlatform(string platform, string dir);

设置.net framework目标平台,platform参数支持的:"v1", "v1.1", "v2", "v4",第二个参数为mscorlib.dll目录

 

public ILMerge.Kind TargetKind { get; set; }

获取或设置目标平台类型(Windows应用程序、DOS应用程序、DLL)

public enum Kind

        {

            Dll = 0,

            Exe = 1,

            WinExe = 2,

            SameAsPrimaryAssembly = 3,

        }

此工具设置为SameAsPrimaryAssembly,即与输入文件的主程序集相同。

 

public void Merge();

开始合并。

 

工具下载:https://files.cnblogs.com/files/sndnnlfhvk/ILMergeGUI.zip

源码下载:https://files.cnblogs.com/files/sndnnlfhvk/ILMergeGUICode.zip

 

 

 

 

 

 

 

 

 

 

posted @ 2016-06-01 14:40 霜天雪舞 阅读(10066) 评论(9) 推荐(8) 编辑
摘要: 一、引子首先来看两个常见的问题:1. 单窗体的问题。在主应用程序菜单点击菜单,弹出工具箱窗体,现在的问题是,希望工具箱要么不出现,出现也只可以出现一个,但是实际上每次点击菜单,都会实例化一个“工具箱”并显示出来,这样会产生很多个“工具箱”,不是所希望的。注意这里希望的是“工具箱”窗体单例,而不是进程... 阅读全文
posted @ 2014-09-18 00:10 霜天雪舞 阅读(1922) 评论(4) 推荐(3) 编辑
摘要: 我们开发WinForm应用程序的时候,经常在窗体设计器出现一些错误提示:看上面的错误信息就知道其实在设计器时程序已经运行了拖进窗体的控件的构造函数和Load事件等。看网上好多资料都说是DesignMode属性的问题,试了下,感觉不行的。下面新建个用户控件,在构造函数里面处理看看是否是DesignMode: public partial class TestControl : UserControl { public TestControl() { InitializeComponent(); if (Desig... 阅读全文
posted @ 2012-07-25 15:54 霜天雪舞 阅读(4973) 评论(5) 推荐(3) 编辑
摘要: 1.首先添加DevExpress.OfficeSkins和DevExpress.BonusSkins 两个引用。在Main()函数之前进行皮肤注册: static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { DevExpress.UserSkins.BonusSkins.Register();//皮肤注册 DevEx... 阅读全文
posted @ 2012-07-23 15:51 霜天雪舞 阅读(2866) 评论(3) 推荐(0) 编辑
摘要: 说到马赛克,一些闷骚男都懂的,“有马”、“无马”,此马即马赛克简称,可别光往邪恶的一面想,马赛克也有和谐的一面,比如一些新闻之类的将关键不想展示给观众的给和谐掉,此即马赛克应用。 先看一张具有极低解析度的马赛克图案:看到一块块的同颜色块、或许你就能猜出其算法了。马赛克算法很简单,说白了就是把一张图片分割成若干个val * val像素的小区块(可能在边缘有零星的小块,但不影响整体算法,val越大,马赛克效果越明显),每个小区块的颜色都是相同的。为了方便起见,我们不妨让这个颜色就用该区域最左上角的那个点的颜色。当然还可以有其他方法,比如取区块中间点的颜色,或区块中随机点的颜色作代表等等。下面的示意 阅读全文
posted @ 2012-03-27 16:40 霜天雪舞 阅读(5191) 评论(12) 推荐(9) 编辑
摘要: 霓虹处理与浮雕处理算法有共同之处,都是像素及邻近像素直接关系运算,因此放到一起写。霓虹处理 关于霓虹灯的效果,不知道的可以baidu图片里面看看。霓虹处理算法:同样以3*3的点阵为例,目标像素g(i,j)应当以f(i,j)与f(i,j+1),f(i,j)与f(i+1,j)的梯度作为R,G,B分量,我们不妨设f(i,j)的RGB分量为(r1, g1, b1), f(i,j+1)为(r2, g2, b2), f(i+1,j)为(r3, g3, b3), g(i, j)为(r, g, b),那么结果应该为 r = 2 * sqrt( (r1 - r2)^2 + (r1 - r3)^2 ) g = . 阅读全文
posted @ 2012-03-11 21:53 霜天雪舞 阅读(2870) 评论(5) 推荐(3) 编辑
摘要: 本系列专题前两篇分别探讨了常见的几种图形处理算法和性能已经图形的灰度处理、逆反处理和二值化处理,本文介绍雾化处理。先上图,先不谈算法,其实很多东西来源于现实的。设想你有块透明的玻璃,朝上面哈几口气,然后将玻璃放到一张图片上,看看有啥效果?应该和上图差不多的雾化效果吧。下面来分析原理从而推导出算法。玻璃上面哈气后,有很多小水滴小水汽之类的,形状不规则,因此发生光折射,由于水滴的不规则性,发生折射也是不规则的,也就是折射光的折射角不确定,但是肯定有个范围,假设有像素A(i,j),(i和j分别表示横坐标和纵坐标),折射后一定几率在A(i+d,j+d)处,(-k<d<k),该点在原来的点为 阅读全文
posted @ 2012-03-08 21:26 霜天雪舞 阅读(2980) 评论(5) 推荐(4) 编辑
摘要: 在本系列博文中,将介绍几种常见的图形处理算法。上文C#图片处理常见方法性能比较 中以彩色转灰色处理为例探讨了3中方法的性能,因此彩色转灰度处理就不再另做介绍。 public enum DealType { 黑白处理, 逆反处理, 平滑处理, 霓虹处理, 浮雕处理, 雾化处理, 锐化处理, 二值处理, 马赛克处理, 油画处理 }DealType枚举定义了常见的图形处理方法。 /// <summary> /// 具有图片处理功能的接口 ... 阅读全文
posted @ 2012-03-04 16:31 霜天雪舞 阅读(3430) 评论(5) 推荐(5) 编辑
摘要: 在.NET编程中,由于GDI+的出现,使得对于图像的处理功能大大增强。在文通过一个简单黑白处理实例介绍在.NET中常见的图片处理方法和原理并比较各种方法的性能。黑白处理原理:彩色图像处理成黑白效果通常有3种算法;(1).最大值法: 使每个像素点的 R, G, B 值等于原像素点的 RGB (颜色值) 中最大的一个;(2).平均值法: 使用每个像素点的 R,G,B值等于原像素点的RGB值的平均值;(3).加权平均值法: 对每个像素点的 R, G, B值进行加权自认为第三种方法做出来的黑白效果图像最 "真实".1.GetPixel方法GetPixel(i,j)和SetPixel 阅读全文
posted @ 2012-02-27 23:46 霜天雪舞 阅读(6767) 评论(17) 推荐(8) 编辑
点击右上角即可分享
微信分享提示