2010-08-13 2 views
1

ILMerge обычно сглаживает мои сборки при создании Release, но когда публикация для 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 выполняет сборку перед публикацией. Если вы хотите, чтобы что-то изменилось в вашем развертывании, вам придется вручную собрать файлы и отредактировать манифест развертывания (файл .application) и манифест приложения (файл yourapp.exe.manifest) с помощью MageUI и переписать файлы.

+0

В случае, если кому-то нужно пройти этот маршрут, мой вопрос и ответ здесь подробно объясняют процесс http://stackoverflow.com/questions/25004056/resign-clickonce-manifest-using-mage-exe –

Смежные вопросы