[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 条评论
登录 后参与评论

相关文章

来自专栏施炯的IoT开发专栏

Silverlight for Windows Phone Toolkit 更新

The Silverlight Toolkit team has just published the new release of the Silverlig...

1675
来自专栏林德熙的博客

C# 标准性能测试

经常我写一个类,作为一个工具类,小伙伴会问我这个类的性能,这时我就需要一个标准的工具进行测试。 本文告诉大家如何使用 benchmarkdotnet 做测试。

682
来自专栏张善友的专栏

ASP.NET 5 和Entity Framework 7公告仓库

ASP.NET 5 有一个公告仓库来介绍ASP.NET 5和 Entity Framework 7的主要变更说明,这个对于日夜更新的项目来说,很多人经常会遇到问...

1808
来自专栏逸鹏说道

【开源】文档生成工具 DocFX

源码:https://github.com/dotnet/docfx 下载:https://github.com/dotnet/docfx/releases ...

2534
来自专栏张善友的专栏

好用的WCF Visualizers

从 Visual Studio 2005 开始有个非常好用的功能, 就是在 debug 的时候,  可以用Visualizer 很方便的查看某些类型的参数, 比...

1839
来自专栏Ken的杂谈

.NET Core快速入门教程 3、我的第一个.NET Core App (CentOS篇)

591
来自专栏张善友的专栏

WiX和DTF介绍

Windows Installer XML(WiX) 这里所介绍的是Wix 3.0版本,目前还是beta. Wix 是 Windows Installer XM...

1748
来自专栏张善友的专栏

Xamarin 开源应用汇集

1、The Xamarin Field Service App, a Cross-Platform Starter Kit 2、FriendTab Initi...

1875
来自专栏自由而无用的灵魂的碎碎念

介绍CodeRush Xpress for C#

用过Eclipse编写java代码,感觉它的某些功能在visual studio 中是没有的,比如Toggle Mark Occurrences:

812
来自专栏walterlv - 吕毅的博客

在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中

2018-07-03 13:30

623

扫码关注云+社区