【发布时间】:2017-03-25 23:40:00
【问题描述】:
我使用 CodeDom 编译运行时生成的动态 c# 代码并在内存中执行它。 CodeDom 引用已安装的外部 nuget 库,它位于 bin 文件夹中。
以下代码展示了如何从 binfoler 引用外部库:
CompilerParameters cp = new CompilerParameters();
//dll are in binFolder
var dll = Directory.EnumerateFiles(binFolder, "*.dll").ToArray();
cp.ReferencedAssemblies.AddRange(dll);
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
程序运行良好。
我想使用 ILMerg 将 exe 和所有 dll 文件合并到一个可执行文件中 所以,我应该修改这一行:
var dll = Directory.EnumerateFiles(binFolder, "*.dll").ToArray();
成为:
// how to load the empeded dll by ILMerge to be passed to CompilerParameters cp
var dll = get_the_empeded_dll_by_ILMerge() ;
你能帮忙实现这个功能吗:get_the_empeded_dll_by_ILMerge()
【问题讨论】:
-
你试过只引用合并的 exe 吗?
-
耶。它正在工作:):)。请写下您的评论作为答案,我会接受。
-
其他问题:如何检查某些dll文件是否被合并以控制从exe文件或bin文件夹加载程序集(以防不合并)?
标签: c# embedded-resource codedom ilmerge