gpt4 book ai didi

c# - 在构建时将所有依赖程序集合并到 Exe

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:25 25 4
gpt4 key购买 nike

我一直在寻找如何将 dll 合并到项目输出 exe。

我安装了 Vitevic Assembly Embedder 但是在构建项目时,它仍然保留一些 dll 文件。

自从我听说了 ILMerge 但我找不到任何有用的支持。我需要一个可以合并所有 dll 的工具。

最佳答案

这是我通常做的:

  1. 将所有 dll 存储在解决方案中的某个文件夹中(如“libs”)。
  2. 在 VS 中将所有 dll 的“构建操作”更改为“嵌入式资源”- 这将在 exe 中“存储”实际文件。
  3. 将此代码放在 Main 方法中,或在使用任何外部程序集之前的任何地方:

    AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;

还有这个:

    private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var thisAssembly = Assembly.GetExecutingAssembly();

var assemblyName = new AssemblyName(args.Name);
var dllName = assemblyName.Name + ".dll";

var resources = thisAssembly.GetManifestResourceNames().Where(s => s.EndsWith(dllName));
if (resources.Any())
{
var resourceName = resources.First();
using (var stream = thisAssembly.GetManifestResourceStream(resourceName))
{
if (stream == null) return null;
var block = new byte[stream.Length];

try
{
stream.Read(block, 0, block.Length);
return Assembly.Load(block);
}
catch (IOException)
{
return null;
}
catch (BadImageFormatException)
{
return null;
}
}
}

return null;
}

关于c# - 在构建时将所有依赖程序集合并到 Exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com