ILMerge通常在构建Release时合并我的程序集,但是当发布ClickOnce时,生成的EXE不包含应该合并的DLL。
我认为ILMerge正在运行,但Publish正在用旧的原始程序覆盖新的合并程序集。我做了一个Post-Build事件,在ilmerge运行后立即停止了构建,它按预期合并。
为什么会发生这种情况,是否有解决方法?
答案 0 :(得分:0)
ClickOnce在执行发布之前执行构建。如果您想要对部署进行更改,则必须手动组装文件并使用MageUI编辑部署清单(.application文件)和应用程序清单(yourapp.exe.manifest文件)并重新签名文件。
答案 1 :(得分:0)
显然,在项目构建之后,并且构建后脚本运行后,Publish将输出文件从obj目录重新复制到bin目录(可能是因为它修改了清单文件)。至少在Visual Studio 2010中。
我通过在ilmerge行之后将其添加到我的构建后脚本来修复此问题:
ECHO将程序集从bin复制回obj目录:COPY“$(TargetFileName)”“.... \ obj \ $(ConfigurationName)” COPY“$(TargetFileName)”“.... \ obj \ $(ConfigurationName)”
它将文件复制回obj目录,因此Publish可以使用正确的文件来完成它。