【问题标题】:Why does ILMerge do nothing when publishing?为什么发布时 ILMerge 什么都不做?
【发布时间】:2010-08-13 01:51:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# clickonce publish ilmerge


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      相关资源
      最近更新 更多