介绍开源的.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通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地 ...
随机推荐
- 网站和Web应用程序的区别
新建项目里面的(ASP.NET Web 应用程序)主要是做B/S系统的,与winform的开发方式类似.新建网站(ASP.NET 网站)是主要开发网站的.其实你只要跟着教程做就行了.具体区别如下(借鉴 ...
- STL之优先队列(1)
优先队列用法 在优先队列中,优先级高的元素先出队列. 标准库默认使用元素类型的<操作符来确定它们之间的优先级关系. 优先队列的第一种用法: 也是最常用的用法 priority_queue< ...
- android 多点
引用:http://blog.163.com/fenglang_2006/blog/static/13366231820108205274325/ 第一章摘要 在Linux内核支持的基础上,Andro ...
- 配置文件之SharedPreferences
新建配置文件类 /** * Created by RongGuang * 应用程序配置信息 */ public class AppOption { public static final String ...
- 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!
git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管 ...
- 机器人操作系统(ROS)教程4:ROS的框架【转】
转自:http://www.arduino.cn/thread-11351-1-1.html 在进行ROS的代码开发前,有必要了解一些ROS的概念.首先,ROS的系统代码分为两部分:main和univ ...
- SQL标签
SQL标签库提供了与关系型数据库进行交互的标签. 引入语法:<%@ taglib prefix="sql" uri="http://java.sun.com/jsp ...
- C语言中执行到预编译
在Linux中,执行命令:gcc -o linux.i linux.c -E
- Android布局-TableLayout表格布局
一.表格布局-TableLayout 1.概念 表格布局采用行列的形式来管理UI的控件.表格布局适合于有规则的布局. TableRow,用来管理行,TableRow中的一个空间占据该行的一列.若不用T ...
- (转) CCEditBox 编辑框
CCEditBox 编辑框 原文: http://blog.csdn.net/cloud95/article/details/8773470 分类: cocos2d-x 2013-04-08 19:1 ...