[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等已经被引用进来,如下图所示:

三、新建一个引用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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

在CentOS 6.3下安装OpenPetra 的 Mono 3.0.6 部署包

这篇文章记录的是在CentOS 6.3下安装《OpenPetra 以及CentOS Mono 3.0 部署包》提到的 Mono 3.0.6 部署包。 首先下载r...

1888
来自专栏Golang语言社区

Go源码编译

This is a part of a larger effort that I’m calling GopherSource, and our goal is...

591
来自专栏菩提树下的杨过

Oracle:ODP.NET Managed 小试牛刀

“ODP.NET Managed”发布已经有一段时间了,近期正好有一个新项目,想尝试用一下,参考园子里的文章:《.NET Oracle Developer的福音...

2156
来自专栏林德熙的博客

win10 uwp InkCanvas控件数据绑定

参见:https://github.com/Microsoft/Windows-task-snippets/blob/master/tasks/InkCanva...

511
来自专栏zhisheng

渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建

去 https://www.elastic.co/downloads/past-releases 这里找到 ElasticSearch 6.3.2 版本,下载后...

1132
来自专栏程序员的酒和故事

libphonenumber--windows上编译libphonenumber.lib以及使用(C++、VS2015)

再介绍一个谷歌的,自带光环的库–libphonenumber. 虽然这个库是用c++写的,但是我们在网络上很少见到在C++开发中使用这个库,或是说在window...

46410
来自专栏C# 编程

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

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

2570
来自专栏大壮

videocore 和 Swift 混编引发的坑(实战篇)

1727
来自专栏后端沉思录

springboot、redis整合

681
来自专栏乐沙弥的世界

Linux script 命令记录(数据库)操作步骤

    对DBA而言,经常碰到升级数据库或是apply patch,以及有些时候需要运行大量的脚本。对于这些操作我们希望现在在屏幕同时又输出的文件以备后续查询过...

1024

扫码关注云+社区