如何将两个或多个c#程序集合并到一个库中?

如何将两个或多个c#程序集合并到一个库中?,c#,dll,C#,Dll,我有4个DLL。但是我想有一个单独的dll,它将包含所有4个dll的代码。我试图添加一个项目,并将所有现有代码复制粘贴到一个项目中,但我做不到 ILMerge是一个用于将多个.NET程序集合并到 单个.NET程序集 您可以使用实用程序 或者你可以 下面是代码示例: AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => { using (var stream = Assembly.GetExecutingAssembl

我有4个DLL。但是我想有一个单独的dll,它将包含所有4个dll的代码。我试图添加一个项目,并将所有现有代码复制粘贴到一个项目中,但我做不到

ILMerge是一个用于将多个.NET程序集合并到 单个.NET程序集

您可以使用实用程序

或者你可以

下面是代码示例:

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
   using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
   {
      Byte[] assemblyData = new Byte[stream.Length];
      stream.Read(assemblyData, 0, assemblyData.Length);
      return Assembly.Load(assemblyData);
   }
};

有一个来自微软的工具:

@Javidan为什么你不想把dll作为资源嵌入到一个dll中?您不需要接触程序集,因为它们可能已签名,并且在IL级别合并后需要退出生成的程序集。我不知道该怎么办。我已安装了ilmerge,但是不能使用。也不知道哪种方法适合合并。ILMerge是一个在编译后运行的实用程序,它会将所有程序集合并到一个结果程序集中。在命令行上运行该实用程序,如“C:\Program Files\Microsoft\ILMerge\ILMerge.exe”/out:SampleApp1.exe SampleApp1.exe SharpSnmpLib.dll。您还可以向项目的生成后处理中添加类似的命令。没有类似于ILMerge.exe的命令。但我已经安装了此命令。如果您正在运行x64,是否检查了“C:\Program Files(x86)\Microsoft\ILMerge\”?将其作为资源添加,使用解决方案资源管理器,打开项目属性,并将需要的程序集添加为二进制资源我正在制作类库(公共对话框)。但我找到了一些,但它们也在类库项目中。我将它们作为现有项目添加到我的项目(类库)。当我构建并想要使用它们时,我必须将每个程序集添加到引用将引用添加到这些DLL的项目中,但在项目的引用程序集部分,指向它们并在引用程序集的属性编辑器中选择“Copy Local:False,Embed Types:False”,然后像往常一样,在Application.Run()方法调用之前从应用程序部分的嵌入资源加载em,无论如何,这些程序集由主程序集引用,您可以在设计时引用项目中的程序集,而不必将它们全部复制到程序集输出文件夹中,而是在该存储程序集引用时作为资源存储在一个程序集加载中。我做了您想要的事情,但您无法理解我,我有一个将创建dilaogs的主类(DialogFactory.ColorPicker arg=new DialogFactory.ColorPicker)。当我将此dll(DialogFactory)添加到任何windows应用程序时,我不仅要添加此dll,还要添加在DialogFactory中使用的其他dll。我一直在尝试加载嵌入式dll时遇到大量问题……这已经有一段时间了,但我遇到的问题是,即使是
load(byte[])
试图从磁盘加载程序集。@pst加载程序集没有问题,因为您可以在它自己的应用程序域中加载程序集,并手动控制对它的访问和版本控制。是的,在应用程序域中加载程序集时,不能从磁盘重新加载或由另一个程序集重写,因为它已经是loa在内存中存储。这是设计的。