无法将EPPlus.dll嵌入到我的exe中

时间:2014-07-24 08:53:45

标签: c# .net winforms visual-studio-2010 embed

我需要将EPPlus.dll嵌入到我的独立exe应用程序中。我不希望它沿着exe复制。显然将其作为装配资源将其解决,这将解决我的问题。我发现了许多关于如何做的说明。对于例如我执行了以下所有操作:

https://www.youtube.com/watch?v=x-KK7bmo1AM

http://adamthetech.com/2011/06/embed-dll-files-within-an-exe-c-sharp-winforms/

Embedding DLL's into .exe in in Visual C# 2010

我仍然得到Could not load file or assembly 'EPPlus.dll'...

你能不能给我一些想法,因为我之前从未做过这样的事情?

P.S。:我使用VS C#2010 Express

2 个答案:

答案 0 :(得分:0)

尝试在您的应用程序中查看此内容:

在program.cs主要方法中:

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

创建活动:

private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
    if (args.Name.StartsWith("MyAssembly,"))
    {
        return Assembly.Load(Properties.Resources.MyAssembly_Dll);
    }
    return null;
}

我正在使用类似的东西来动态加载需要其他尚未加载的程序集的程序集,因此我根据需要加载它们。

欢迎评论。

答案 1 :(得分:0)

here下载ILMerge,然后安装ILMerge。

之后,如果您使用的是32位系统,则应该拥有以下文件C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exeC:\Program Files\Microsoft\ILMerge\ILMerge.exe

然后使用以下参数执行ILMerge.exe /out:OutputExeFile.exe InputExeFile.exe dllfile.dll

之后ILMerge应该合并了InputExeFile.exe和dllfile.dll并将结果存储在OutputExeFile.exe中

如果您只是运行ilmerge,您将获得以下帮助

  

用法:ilmerge [/ lib:directory] ​​ [/ log [:filename]] [/ keyfile:filename   [/ delaysign]] [/ internalize [:filename]]   [/ t [arget] :( library | exe | winexe)] [/ closed] [/ ndebug] [/ ver:version]   [/ copyattrs [/ allowMultiple] [/ keepFirst]] [/ xmldocs] [/ attr:filename]   [/ targetplatform:[,] | / v1 | /v1.1 | / v2 | / V4]   [/ useFullPublicKeyForReferences] [/ wildcards] [/ zeroPeKind]   [/ allowDup:type] * [/ union] [/ align:n] / out:filename   [...]