1

ILMerge 通常在构建 Release 时很好地合并我的程序集,但是在为 ClickOnce 发布时,生成的 EXE 不包含应该合并的 DLL。

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

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

4

2 回答 2

0

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

于 2010-08-13T09:10:10.517 回答
0

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

我通过在 ilmerge 行之后将其添加到我的构建后脚本来解决此问题:

ECHO 将程序集从 bin 复制回 obj 目录: COPY "$(TargetFileName)" "....\obj\$(ConfigurationName)" COPY "$(TargetFileName)" "....\obj\$(ConfigurationName)"

它将文件复制回 obj 目录,以便 Publish 可以使用正确的文件执行其操作。

于 2010-08-13T10:02:58.907 回答