首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ILMerge DLL:程序集未正确合并,仍列为外部引用

ILMerge DLL 是一种用于合并多个 .NET DLL 文件为一个文件的开源工具。它可以将多个 DLL 文件合并为一个 DLL 文件,并生成一个单独的合并 DLL 文件,以便在应用程序中使用。

合并 DLL 的主要优点是可以减少应用程序的 DLL 文件大小,并提高 DLL 文件的加载速度,同时还可以帮助防止 DLL 冲突。

ILMerge DLL 是一款开源工具,可以在 GitHub 上找到它的源代码,并且它还支持其他编程语言,包括 C#、VB.NET 和 F# 等。

在开发过程中,如果遇到程序集未正确合并的情况,可以尝试使用 ILMerge DLL 工具进行合并,以避免出现外部引用的问题。

推荐的腾讯云产品和相关链接地址如下:

以上是 ILMerge DLL 的基本概念和优势,以及腾讯云相关产品的介绍。希望能对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET 使用 ILRepack 合并多个程序(替代 ILMerge),避免引入额外的依赖

我们有多种工具可以将程序合并成为一个。比如 ILMerge、Mono.Merge。...- System.Reflection.Metadata.dll 而我们可以使用 ILRepack 将这些依赖和我们生成的主程序合并成一个程序,这样分发程序的时候只需要一个程序即可。...这些需要合并的参数中,第一个参数是主程序,而后续其他的都是待合并程序。区别主程序和其他程序的原因是输出的程序需要有名称、版本号等等信息,而这些信息将使用主程序集中的信息。...将所有依赖合并指的是将缺少的依赖也一起作为命令行参数传入要合并程序集中。 而另一种是增加一个参数 /lib,即添加一个被搜索的依赖程序的目录。将这个目录指定后,则可以正确解析依赖完成合并。...同时很早就有支持 Portable PDB 的拉取请求,但至今合并

96350

.NET 使用 ILMerge 合并多个程序,避免引入额外的依赖

我们有多种工具可以将程序合并成为一个。打包成一个程序可以避免分发程序的时候带上一堆依赖而出问题。 ILMerge 可以用来将多个程序合并成一个程序。...本文介绍使用 ILMerge 工具和其 NuGet 工具包来合并程序和其依赖。 ---- 以 NuGet 包的形式使用 ILMerge ILMerge 提供了可供你项目使用的 NuGet 包。...- System.Reflection.Metadata.dll 而我们可以使用 ILMerge 将这些依赖和我们生成的主程序合并成一个程序,这样分发程序的时候只需要一个程序即可。...如果你希望在你的项目当中进行尝试,可以把所有 /log 参数之后的那些程序名称改为你自己的名称。 那么在编译的时候使用命令 msbuild /t:ILMerge 就可以完成程序合并了。...(或路径)(此路径可以和需要合并程序名称相同,这样在合并完之后会覆盖同名称的那个程序) /log 所有需要合并程序名称(或路径) /targetplatform 目标平台,如果是 .NET Framework

1.5K30

C# 版dll 程序合并工具

最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件。网上找了一些资料。  1.       ...自己开发ILMergeGUI  微软的ILMerge需要安装才能使用,结合Costura.Fody可以将ILMerge合并到自己开发的工具中,并且无需安装ILMerge....ILMerge关键API: public void SetInputAssemblies(string[] assems); 设置输入的程序,每一项为程序包含文件绝对路径的全名,其中参数第一个程序为主程序...目录 public ILMerge.Kind TargetKind { get; set; } 获取或设置目标平台类型(Windows应用程序、DOS应用程序DLL) public enum Kind...= 3,         } 此工具设置为SameAsPrimaryAssembly,即与输入文件的主程序相同。

1.9K70

.NET 的程序加载上下文

程序加载到默认加载上下文中时,会自动加载其依赖项。 使用默认加载上下文时,加载到其他上下文中的依赖项将不可用,并且不能将位于探测路径外部位置的程序加载到默认加载上下文中。...以下意外的行为列表照抄自文档 Best Practices for Assembly Loading: 如果已加载一个具有相同标识的程序,则即使指定了不同的路径,LoadFrom 返回已加载的程序...使用 ILRepack / ILMerge 合并依赖 前面我们说过,加载位置上下文中的程序可以依赖默认加载上下文中的程序,而反过来却不行。...关于使用 ILRepack 合并依赖的内容,可以阅读我的另一篇博客: .NET 使用 ILRepack 合并多个程序(替代 ILMerge),避免引入额外的依赖 - walterlv 首先推荐使用 ILRepack...来进行合并,如果你愿意,也可以使用 ILMerge: .NET 使用 ILMerge 合并多个程序,避免引入额外的依赖 ---- 参考资料 Loading .NET Assemblies out

26830

.NET 将多个程序合并成单一程序的 4+3 种方法

但是,如果希望对 Fody 进行更精细化的配置,可以阅读叶洪的博客: .NET 合并程序(将 dll 合并到 exe 中) - Iron 的博客 - CSDN博客 Fody 在 GitHub 上开源:...: .NET 使用 ILMerge 合并多个程序,避免引入额外的依赖 - walterlv ILRepack ILRepack 基于 Mono.Ceil 来进行 IL 合并,其使用方法可以参见我的博客...: .NET 使用 ILRepack 合并多个程序(替代 ILMerge),避免引入额外的依赖 - walterlv ILMerge-GUI 工具(已过时,但适合新手随便玩玩) 你可以在以下网址中找到...使用 SourceYard 源代码包,是直接将源代码合并到了目标项目里面。 使用 ILMerge / ILRepack,是在 IL 级别对程序进行了合并。...表格之外还有一些特别需要说明的: ILRepack 额外支持修改 WPF 编译生成的 Baml 文件,将资源的引用路径修改成新程序的路径。

98730

使用ILMerge将源DLL合并到目标EXE(.NET4.6.2)

本文主要是使用微软的ILMerge工具将源DLL合并到目标EXE,因此,需要下载以下工具: https://www.microsoft.com/en-us/download/details.aspx?...打开Visual Studio 2017(或2015),引用Newtonsoft.Json.dll,并在控制台(该项目名称为:ConsoleApp12)编写以下代码: using System; using...如果要运行以上程序,ConsoleApp12.exe 与 Newtonsoft.Json.dll 是必不可少的,但这样子看起来好别扭,如果能合并成一个文件,多好啊。...下面的工作将对以上两个文件进行合并,会使用以上介绍的ILMerge.exe工具。 假如在D盘上的Test文件夹,将对以上两个文件进行合并,如下图所示: ?...       /target:为目标平台,此处输出为EXE        /out:合并之后输出的路径及文件名        /log:需要合并DLL或EXE,需要把所有的合并的EXE或DLL囊括进来

3.4K00

.NET | 笔记 | 1

合并dll与exe Costura.Fody 2. xUnit 中使用 User Secrets 2.1 添加 User Secrets 参考: ASP.NET Core 优雅的在开发环境保存机密(User...从 .NET 6 开始,当为非 Windows 操作系统编译引用代码时,平台分析器会发出编译时警告。...相比之下,我们采用的其他外部依赖项,例如 icu 或 openssl,都是高质量的库。 使 libgdiplus 的功能和质量与 .NET 堆栈的其余部分相媲美是不可行的。....NET 合并程序(将 dll 合并到 exe 中) - 朱志 - 博客园 C#程序(含多个Dll合并成一个Exe的简单方法_C#教程_脚本之家 .NET 合并程序(将 dll 合并到 exe 中...) - 朱志 - 博客园 .NET 使用 ILRepack 合并多个程序(替代 ILMerge),避免引入额外的依赖 - walterlv C# 合并dll与exe - NiTian's Blog 本文作者

98820

C#将引用dll嵌入到exe文件中

当发布的程序引用其它dll, 又只想发布一个exe时就需要把dll打包到exe 当然有多种方法可以打包, 比如微软的ILMerge,混淆器附带的打包......方法如下: 1.项目下新建文件夹dll 2.把要打包的dll文件放在dll文件夹下,并包括在项目中 3.右键文件属性, 生成操作选择嵌入的资源 4.实现如下代码, 在窗口构造中实现也可以(在窗体事件中无效...,如winform_load) 这里需要注意,“引用”下的dll,需要设置“复制本地”为False,这样在bin目录下生成exe的时候就不会顺便复制dll了(这步可要可不要) using System;...嵌入到exe程序的资源中, 并实现程序加载失败事件(当在程序目录和系统目录下找不到程序触发), 当找不到程序时就从资源文件加载, 先转换为字节数组再转换到程序返回给程序, 这样dll就被加载到程序中了...如果exe所在文件夹下有相应dll, 事件并不会被触发!

3.7K20

使用Costura.Fody将源DLL合并到目标EXE

一、本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,因此,需要从以下任一链接下载: ①从Github地址下载: https://github.com/Fody/Costura/releases...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...从以上可以看出,可以使用Costura.Fody将源DLL合并到目标EXE。

1.7K00

使用Costura.Fody将源DLL合并到目标EXE

[http://www.cnc6.cn] 一、本文主要是使用Costura.Fody工具将源DLL合并到目标EXE,因此,需要从以下任一链接下载: ①从Github地址下载: https://github.com...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...五、我们可以使用ILSpy.exe查看刚才生成之后的ConsoleApp12.exe,如下图所示: 从以上可以看出,可以使用Costura.Fody将源DLL合并到目标EXE。

2.3K00

Silverlight体积优化

这里将谈论一下如何减少应用程序的体积。 体积优化 移除使用的程序 Visual Studio在创建sl应用后默认情况下加了很多的程序,有些可能是你根本就用不上的。...首先除了System引用将所有其他的删除掉,然后重新编译应用,将缺失的DLL重新添加回来。...有很多的错误可能是由于添加了命名空间的引用,这里有一个简单的来去掉使用的命名空间(usings),右键点击一个类名,然后选择Organize usings / Remove unused usings...重新打包XAP文件“越小越好” 我们知道Silverlight的XAP包实质上就是一个标准的ZIP包,包内有一个AppManifest使得他在Silverlgith运行时中可正确的被解析。...使用程序缓存 使用程序缓存的办法很简单只需要在sl的属性页面,将library Caching设置为true即可 动态加载XAP 在silverlight开发的过程中可以将模块话,分解成多个xap

91580

C#中的bin和obj文件夹有什么用?

obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。...在生成项目时,对所添加的引用的是绝对路径,而在运行时程序默认只在当前所在的路径下去找。要修改引用的路径,必须通过编程的方法去实现。使用References 对象。...2.obj obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。...,就可以正确的看到你更新的那些接口和函数了。...都可以删掉, 重新编译又生成了 Properties文件夹 定义你程序的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应

4K31

.NET Core跨平台的奥秘:复用之殇

二、程序复用 我们采用C#、VB.NET这样的编程语言编写的源文件经过编译会生成有IL代码和元数据构成的托管模块,一个或者多个托管模块合并生成一个程序。...程序使程序集成为一个自描述性(Self-Describing)的部署单元,除了描述定义在本程序集中所有类型之外,这些元数据还包括对引用外部程序的描述。...包含在元数据中针对外部程序的描述是由编译时引用程序决定的,引用程序的名称(包含文件名、版本和签名的公钥令牌)会直接体现在当前程序的元数据中。...具体来说,如果引用的是一个签名的程序(“Bar”),那么只要求被加载的程序具有一致的文件名和版本;如果引用的是一个经过签名的程序,那么还要求被加载的程序具有一致的公钥令牌。...上面介绍的内容都是在为PCL做铺垫,只有充分理解了Retargetable程序和类型转移的前提下才可能了解PCL的实现原理有正确的理解。

1.2K80

代码质量规则

CA1033:接口方法应可由子类型调用 密封的外部可见类型提供了显式实现公共接口的方法,但没有提供具有相同名称的其他外部可见方法。...CA1812:避免实例化的内部类 程序级别类型的实例不是由程序集中的代码创建的。 CA1813:避免使用非密封特性 .NET 提供用于检索自定义属性的方法。...CA1823:避免使用的私有字段 检测到程序内有似乎访问过的私有字段。...CA5366:将 XmlReader 用于数据读取 XML 使用 DataSet 读取包含不受信数据的 XML,可能会加载危险的外部引用,应使用具有安全解析程序或禁用了 DTD 处理的 XmlReader...这对于某些应用程序来说是一个安全隐患,会导致 DLL 劫持。 CA5393:请勿使用不安全的 DllImportSearchPath 值 默认的 DLL 搜索目录和程序目录中可能存在恶意 DLL

2.1K30

让vc编译出的程序减小体积

MFC的dll(Use MFC in a Share Dll)也会使文件大小缩小很多.现在我们的超小后门编译好了,试下能用否. ok 没问题哦 大家注意到程序运行时会产生一个cmd窗口,要让他没有就好了.../Gh 启用 _penter 函数调用 /clr[:noAssembly] 为公共语言运行时库编译noAssembly - 不产生程序 -输出文件- /Fa[file] 命名程序列表文件 /Fo<.../FR[file] 命名扩展 .SBR 文件 /Fm[file] 命名映射文件 -预处理器- /AI 添加到程序搜索路径 /Fx 将插入的代码合并到文件 /FU 强制使用程序.../d) /doc: 要生成的 XML 文档文件 - 输入文件 - /recurse: 根据通配符规范,包括当前目录和子目录下的所有文件 /reference: 从指定的程序文件引用元数据...(mscorlib.dll) /lib: 指定要在其中搜索引用的附加目录

1.9K10

什么是bin文件?「建议收藏」

出现这样的问题:未能加载文件或程序“DAL”或它的某一个依赖项。系统找不到指定的文件。 原因可能是:1.路径不正确;2.文件不存在。...bin\Debug下面让没有有关DAL的dll文件。不知道为什么了,明明已经把路径改在那个下面了啊?如下图: 没有办法,就手动复制到bin下面了,初步解决了这个问题。...这个就和我们的七层有关系了,因为七层中U层引用Facade层引用BLL引用Factory、IDAL,都引用Entity,但是,没有那一层引用DAL,DAL层被独立了,没有在那一条线中,它是来实现IDAL...所以,U层的bin下面没有DAL层的dll文件。但是,我们的程序启动项是U层,我们的D层要想运行,需要把DAL的动态链接库,放在U层下面。...参考博客:李社河:未能加载文件或程序“DAL”或它的某一个依赖项。系统找不到指定的文件。 那么,为什么这样可以解决呢? 为什么要把dll文件放在U层的bin下面呢?

2.4K20

Silverlight自定义类库实现应用程序缓存

默认情况下,如果SL项目引用了一些其它程序(即通俗意义上的dll文件),在编译打包时,这些dll会全部打包到一个xap文件里,随着引用dll文件越来越多,xap文件会越来越大。...但是如果多个SL项目都要引用相同的程序时,这些dll会重复打包进每个xap文件,用户在加载多个xap时,实际上是重复下载了这部分dll文件,带宽使用率太低。...勾上这个后,查看一下最终的ClientBin目录,会发现一些项目引用的其它程序,已经分离出来变成了zip文件 ?...步骤3:SL项目引用这个dll(或SL类库),并正确勾选"通过使用应用程序库缓存减少XAP大小(R)”即可 最终在ClientBin目录下,会看到类似下面的输出: ?...提示:如果您经过以上处理,vs.net仍然无法将程序分离成zip包,请检查项目的引用中,该程序的“复制本地”属性是否为false,如果不是,请更改为False ?

84390

C# 命名空间和程序

在上面的示例代码中,编译器需要保证引用的每个类型都真实存在,而且代码以正确的方式使用类型一也就是调用确实存在的方法,向方法传递正确数量的实参,保证方法具有正确类型,正确使用方法返回值等。...如果编译器在源代码文件或者引用程序集中找不到指定的类型,就会在类型前面加上System.IO前缀,如果找不到匹配项,就逐一地在类型前面加上通过using引入的命名空间,知道找到指定的类型,否则编译就会报错...,所以通过using引入命名空间的方式,能极大程度的帮助我们减少代码量.还增强了代码的可读性. 2、编译器查找类型的原理 编译器扫描引用的所有的程序,在其中查找类型定义,一旦找到了正确程序,程序信息和类型信息就被嵌入到托管模块中的元数据中....为了获取程序信息必须将定义了被引用程序的信息传递给编译器.C#编译器自动在MSCorLib.dll程序集中查找被引用类型,即使没有显示告诉它这么做.MSCorLib.dll程序集中包含所有核心Framework...别民就显得十分方便,代码如下: using WintellectWidget=Wintellect.Widget; WintellectWidget w=new WintellectWidget(); (3)、外部别名方式

1.3K80
领券