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

本文为原创文章,如转载,请在网页明显位置标明原文名称、作者及网址,谢谢![http://www.cnc6.cn]

一、本文主要是使用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等已经被引用进来,如下图所示:

三、新建一个引用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文件夹下看能生成的文件如下:

从以上图片可以看出,生成的文件没有包含Newtonsoft.Json.dll与Costura.dll没有被生成,只有三个文件。

我们可以删除ConsoleApp.exe.config及ConsoleApp12.pdb文件,留下ConsoleApp12.exe文件即可,ConsoleApp12.exe能单独运行

五、我们可以使用ILSpy.exe查看刚才生成之后的ConsoleApp12.exe,如下图所示:

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏.NET技术

Visual Studio Package 插件开发之自动生成实体工具

  这一篇是VS插件基于Visual Studio SDK扩展开发的,可能有些朋友看到【生成实体】心里可能会暗想,T4模板都可以做了、动软不是已经做了么、不就是...

943
来自专栏JadePeng的技术博客

kgtemp文件转mp3工具

kgtemp文件是酷我音乐软件的缓存文件,本文从技术层面探讨如何解密该文件为mp3文件,并通过读取ID3信息来重命名。 kgtemp解密 kgtemp文件前10...

5379
来自专栏破晓之歌

Vue+Webpack打造todo应用 原

B.vue-loader需要安装15版本以下(参考官方文档 https://vue-loader.vuejs.org/migrating.html#a-plug...

1623
来自专栏C# 编程

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

本文为原创文章,如转载,请在网页明显位置标明原文名称、作者及网址,谢谢! 一、本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,因此,需要...

2200
来自专栏『不羁阁』行走的少年专栏

iOS网络--『文件下载、断点下载』的实现(一):NSURLConnection

1784
来自专栏移动开发之家

Flutter完整开发实战详解(三、 打包与填坑篇)

作为系列文章的第三篇,继篇章一和篇章二之后,本篇将为你着重展示:Flutter开发过程的打包流程、APP包对比、细节技巧与问题处理。本篇主要描述的Flutter...

701
来自专栏Android学习之路

Gradle 将 library module 发布到本地仓库,并添加本地依赖

2229
来自专栏晓晨的专栏

C#获取根目录的方法集合

1343
来自专栏逍遥剑客的游戏开发

C#脚本实践(五): 调试器

1223
来自专栏我和未来有约会

Silverlight本地化

ilverlight本地化 简单的实现多语言版本的Silverlight应用。 日益国际化的同时,需要我们开发的应用根据不同的来访者显示不用的语言,Silv...

18010

扫码关注云+社区