天天看點

[C#]使用Costura.Fody将源DLL合并到目标EXE

本文為原創文章,如轉載,請在網頁明顯位置标明原文名稱、作者及網址,謝謝!

一、本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,是以,需要從以下任一連結下載下傳:

①從Github位址下載下傳:

https://github.com/Fody/Costura/releases      

②從百度網盤下載下傳:

https://pan.baidu.com/s/1kV9W34b      

③【推薦】從Nuget位址安裝工具:

https://www.nuget.org/packages/Costura.Fody/      

并從Visual Studio中的程式包管理器控制台進行安裝:

PM> Install-Package Costura.Fody -Version 1.6.2      

注:最新版本請打開Nuget位址進行擷取

二、安裝之後,Costura.dll等已經被引用進來,如下圖所示:

[C#]使用Costura.Fody将源DLL合并到目标EXE

三、建立一個引用Newtonsoft.Json.dll的解決方案,這個就借用上一篇内容【[C#]使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)】的例子,解決方案下載下傳位址:

https://pan.baidu.com/s/1jIzjpkU      

代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace ConsoleApp12
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Person> list = new List<Person>()
            {
                new Person(){ ID = 1, Name = "ABC" },
                new Person(){ ID = 2, Name = "XYZ" },
            };
            var result = JsonConvert.SerializeObject(list);
            JArray jArray = JArray.Parse(result);
            foreach(var item in jArray)
            {
                Console.WriteLine($"ID:{(int)item["ID"]},Name:{(string)item["Name"]}");
            }
            Console.ReadKey();
        }
    }

    class Person
    {
        public int ID { set; get; }
        public string Name { set; get; }
    }
}      

引用的Newtonsoft.Json.dll如上一張圖檔所示。

四、點選運作按鈕,然後在bin/Debug檔案夾下看能生成的檔案如下:

[C#]使用Costura.Fody将源DLL合并到目标EXE

從以上圖檔可以看出,生成的檔案沒有包含Newtonsoft.Json.dll與Costura.dll沒有被生成,隻有三個檔案。

我們可以删除ConsoleApp.exe.config及ConsoleApp12.pdb檔案,留下ConsoleApp12.exe檔案即可,ConsoleApp12.exe能單獨運作。

五、我們可以使用ILSpy.exe檢視剛才生成之後的ConsoleApp12.exe,如下圖所示:

[C#]使用Costura.Fody将源DLL合并到目标EXE

從以上可以看出,可以使用Costura.Fody将源DLL合并到目标EXE。

作者:CNXY

Github:https://www.github.com/cnxy

出處:http://cnxy.me

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如果文中有什麼錯誤,歡迎指出,謝謝!

https://github.com/Fody/Costura/releases      
https://pan.baidu.com/s/1kV9W34b      
https://www.nuget.org/packages/Costura.Fody/      
PM> Install-Package Costura.Fody -Version 1.6.2      
[C#]使用Costura.Fody将源DLL合并到目标EXE
https://pan.baidu.com/s/1jIzjpkU      
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace ConsoleApp12
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Person> list = new List<Person>()
            {
                new Person(){ ID = 1, Name = "ABC" },
                new Person(){ ID = 2, Name = "XYZ" },
            };
            var result = JsonConvert.SerializeObject(list);
            JArray jArray = JArray.Parse(result);
            foreach(var item in jArray)
            {
                Console.WriteLine($"ID:{(int)item["ID"]},Name:{(string)item["Name"]}");
            }
            Console.ReadKey();
        }
    }

    class Person
    {
        public int ID { set; get; }
        public string Name { set; get; }
    }
}      
[C#]使用Costura.Fody将源DLL合并到目标EXE
[C#]使用Costura.Fody将源DLL合并到目标EXE

繼續閱讀