2010-08-13 41 views
1

ILMerge通常在构建发布时合并我的程序集,但是在发布ClickOnce时,生成的EXE不包含应该合并的DLL。为什么ILMerge在发布时什么都不做?

我认为ILMerge正在工作,但Publish会覆盖旧的原始合并程序集。我做了一个Post-Build事件,它在ilmerge运行后立即停止构建,并且按照预期进行了合并。

为什么会发生这种情况,是否有解决方法?

回答

0

显然,在项目构建和生成后脚本运行后,Publish会将输出文件从obj目录复制到bin目录(可能是因为它修改了清单文件)。至少在Visual Studio 2010中

我解决了这个由ilmerge行之后添加此我后期生成脚本:

ECHO复印配件从斌回OBJ目录:COPY“$(TargetFileName)”“ .... \ obj \ $(ConfigurationName)“ COPY”$(TargetFileName)“”.... \ obj \ $(ConfigurationName)“

它将文件复制回obj目录,以便发布可以执行它的东西与正确的文件。

0

ClickOnce在发布之前执行构建。如果您希望对部署进行更改,则必须手动组合文件,并使用MageUI编辑部署清单(.application文件)和应用程序清单(yourapp.exe.manifest文件),然后重新签署这些文件。

+0

如果有人需要走这条路我的问题和答案在这里解释详细的过程http://stackoverflow.com/questions/25004056/resign-clickonce-manifest-using-mage-exe – 2015-03-26 19:26:26