介绍开源的.net通信框架NetworkComms框架之九 合并DLL
原文网址: http://www.cnblogs.com/csdev
Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是:Apache License v2
开源地址是:https://github.com/MarcFletcher/NetworkComms.Net
合并Dll 不属于网络通信部分的功能,NetworkComms 框架带有这样一个Demo,用于合并所有的DLL.很有用,所以单独讲一下。
程序实际调用的是微软的ILMerge程序进行工作

MergedDllBuild程序需要引用所有要合并的DLL所属的工程文件。
没有工程文件的,需要把Dll复制到 Bin目录下
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ILMerging;
using System.IO;
using System.Reflection;
namespace MergedDllBuild
{
class Program
{
static void Main(string[] args)
{
#if !DEBUG
Version networkCommsVersion =
new Version(Assembly.ReflectionOnlyLoad("NetworkCommsDotNet").FullName.
Split(',').
Where(s => s.Split().
ToDictionary(s => s.Split(].Trim(), s => s.Split(].Trim())["Version"]);
string targetPlatform = "v2";
string msCoreLibDirectory = @"C:\Windows\Microsoft.NET\Framework\v2.0.50727";
bool coreBuildEnabled = false;
bool completeBuildEnabled = true;
#region Merge Core
if (coreBuildEnabled)
{
Directory.CreateDirectory("MergedCore");
File.Delete(@"MergedCore\MergeLog.txt");
ILMerge coreMerge = new ILMerge();
List<string> coreAssembles = new List<string>();
coreAssembles.Add("NetworkCommsDotNet.dll");
coreAssembles.Add("protobuf-net.dll");
coreAssembles.Add("ProtobufSerializer.dll");
coreMerge.SetInputAssemblies(coreAssembles.ToArray());
coreMerge.Version = networkCommsVersion;
coreMerge.TargetKind = ILMerge.Kind.Dll;
coreMerge.SetTargetPlatform(targetPlatform, msCoreLibDirectory);
coreMerge.XmlDocumentation = true;
coreMerge.KeyFile = "networkcomms.net.snk";
coreMerge.OutputFile = @"MergedCore\NetworkCommsDotNetCore.dll";
coreMerge.Log = true;
coreMerge.LogFile = @"MergedCore\MergeLog.txt";
coreMerge.Merge();
}
#endregion
#region Merge Complete
if (completeBuildEnabled)
{
Directory.CreateDirectory("MergedComplete");
File.Delete(@"MergedComplete\MergeLog.txt");
ILMerge completeMerge = new ILMerge();
List<string> completeAssembles = new List<string>();
completeAssembles.Add("NetworkCommsDotNet.dll");
completeAssembles.Add("protobuf-net.dll");
completeAssembles.Add("ProtobufSerializer.dll");
completeAssembles.Add("ICSharpCode.SharpZipLib.dll");
completeAssembles.Add("SharpZipLibCompressor.dll");
//completeAssembles.Add("QuickLZCompressor.dll");
completeMerge.SetInputAssemblies(completeAssembles.ToArray());
completeMerge.Version = networkCommsVersion;
completeMerge.TargetKind = ILMerge.Kind.Dll;
completeMerge.SetTargetPlatform(targetPlatform, msCoreLibDirectory);
completeMerge.XmlDocumentation = true;
completeMerge.KeyFile = "networkcomms.net.snk";
completeMerge.OutputFile = @"MergedComplete\NetworkCommsDotNetComplete.dll";
completeMerge.Log = true;
completeMerge.LogFile = @"MergedComplete\MergeLog.txt";
completeMerge.Merge();
}
#endregion
#endif
}
}
}
源码:http://pan.baidu.com/s/1dEJEdNz
介绍开源的.net通信框架NetworkComms框架之九 合并DLL的更多相关文章
- 介绍开源的.net通信框架NetworkComms框架 源码分析
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 售价249英镑 我曾经花了 ...
- 介绍开源的.net通信框架NetworkComms框架之二 传递类
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地 ...
- 介绍开源的.net通信框架NetworkComms框架之四 消息边界
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(三)PacketHeader
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架之一 首字节验证
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地 ...
- 介绍开源的.net通信框架NetworkComms框架之五 心跳检测
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms
Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地址是:https://github.com/MarcFletcher/ ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二)ConnectionInfo
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架之三 传递List
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地 ...
随机推荐
- Eclipse in Ubuntu16.04LTS Final Beta
#2016.03.30 在虚拟机Ubuntu16.04LTS上,用Eclipse编写运行Java,就目前而言,实在不是明智之举.卡顿极其厉害,还是在物理机上运行吧.那么继续Ubuntu的探索历程. 用 ...
- VBA好的插件
VBE 小插件--- Office 编程助手 :http://club.excelhome.net/thread-1055425-1-1.html VB以及VBA的编程助手MZ-tools7.0破解版 ...
- WPF:设置弹出子菜单的是否可用状态及效果
需求: 设置弹出子菜单(二级)项仅首项可用,其他项均不可用:不可用是呈灰色效果. 注: 菜单项都是依据层级数据模板.具体格式如下: StackBlock{TextBlock{Image}.TextBl ...
- Java虚拟机学习(4):对象内存分配与回收
对象优先在Eden上分配 大多数情况下,对象优先在新生代Eden区域中分配.当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC).Minor GC期间虚拟机将E ...
- 【转】Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If
转载地址:http://fanshuyao.iteye.com/blog/1695482 在eclipse启动tomcat时遇到超时45秒的问题: Server Tomcat v7.0 Server ...
- 读取NVRAM中的SN(barcode)
在Custom_NvRam_LID.h中,找到需要读取的ID对应的值 实现NvRAMAgent import java.lang.String; import android.os.RemoteExc ...
- [问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供)
[问题2014A01] 解答二(后 n-1 列拆分法,由郭昱君同学提供) \[|A|=\begin{vmatrix} 1 & x_1^2-ax_1 & x_1^3-ax_1^2 &am ...
- django admin下拉列表不显示值,显示为object的处理
问题:模板中创建form表单中的下拉列表, 前台打开页面显示object,而不是值,如图: 尝试了多种办法无果,最后解决了,处理办法是修改models.py,原来的model: class Techn ...
- jsp表格数据导出到Execl
1.关于“下载” 需要设置页面header的一个属性为:Content-Disposition: attachment; filename=下载的文件.txt 如: <a href=" ...
- BZOJ 2600: [Ioi2011]ricehub
2600: [Ioi2011]ricehub Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 628 Solved: 325[Submit][Stat ...