原文网址: 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

最新文章

  1. org.apache.jasper.JasperException:省略&quot;/html/sysmaintain/authority/user/../../module/verify_login.jsp&quot; not found
  2. zabbix监控模式、分布式、自动化
  3. SSH框架中spring的原理
  4. 聊天界面之气泡文本cell(一)
  5. 使用Bootstrap-Table 遇到的问题
  6. PAT-乙级-1027. 打印沙漏(20)
  7. 极度郁闷的错误调试——ajax jquery
  8. DC综合环境的一些概念
  9. windows phone xaml文件中元素及属性(10)
  10. OCP-1Z0-051-题目解析-第13题
  11. Git环境搭建以及上传到GitHub全文记录
  12. Instrumentation 框架简介
  13. Nginx的 HTTP 499 状态码处理
  14. vue.js设置、获取、删除cookie
  15. SQL*Loader FAQ
  16. 从Uber微服务看最佳实践如何炼成?
  17. DedeCMS清空删除所有文档后新建文档信息ID从1开始
  18. 关于iptables添加规则不生效的问题
  19. 423. Reconstruct Original Digits from English(Medium)
  20. C#7.0&amp;6.0新特性 — 完整版

热门文章

  1. PHP5与MySQL数据库操作
  2. 【转】PowerShell入门(序):为什么需要PowerShell?
  3. DIV 垂直 垂直水平 居中
  4. vm虚拟机启动失败 Global\vmx86
  5. [转]http://m635674608.iteye.com/blog/1750833
  6. UDP:用户数据报协议
  7. WPFのInkCanvas作为蒙版透明笔迹不透明
  8. SelectMany等LINQ运算符的使用
  9. jquery之remove(),detach()方法详解
  10. java 导出Excel 大数据量,自己经验总结!(二)