Я создал приложение WPF и запутал основной .exe с внешним инструментом.
Теперь я испытываю затруднения для публикации его как приложения ClickOnce, потому что Visual Studio так или иначе перекомпилировала снова основной исполняемый файл.
Я деактивировал флажки сборки согласно Решению → Менеджер конфигурации, но это не работало: исполняемый файл продолжает восстанавливаться, когда я публикую приложение на http://localhost/MyApplication
Действительно ли возможно развернуть мое приложение ClickOnce, не перекомпилировав текущий проект?
Если это не путь, есть ли бесплатный инструмент для генерации приложения ClickOnce с определенными желаемыми файлами?
Отказ от ответственности: я работаю в PreEmptive Solutions, создателях Dotfuscator.
Проблема с решением Джареда заключается в том, что задача пост-сборки выполняется слишком поздно в процессе сборки, так как шаги сборки ClickOnce создают манифесты (включая подписи сборки, которые изменяют обфускацию) задолго до запуска пост-сборки. Вы можете взломать файл MSBuild (ваш .csproj / .vbproj), чтобы вызвать задачу обфускации на этапе AfterCompile и заставить обфускатор сбрасывать запутанные сборки в каталог bin сборок, но это боль.
Второй альтернативой является использование инструментов Mage / MageUI для воссоздания манифестов ClickOnce путем публикации вашего приложения, обфускации сборок, перезаписи опубликованных сборок обфусцированными версиями и последующего запуска Mage для воссоздания манифестов, как показано здесь . Документация по утилите Mage находится здесь .
Третий вариант - использовать обфускатор Dotfuscator Professional версии 4.6.1010 или выше. Dotfuscator имеет возможность напрямую читать манифест развертывания ClickOnce в качестве входных данных, скрывать сборки и выводить как запутанные сборки, так и полностью обновленные файлы манифеста. См. здесь для отправной точки.
Я не совсем понимаю, почему у ClickOnce такое очевидное поведение. Однако вы должны уметь обойти это, вставив шаг обфускации в систему сборки. Попробуйте определить задачу после сборки, которая запустит обфускатор против EXE / DLL. Поскольку это задание будет выполняться как часть сборки, ClickOnce выберет обфускацию DLL пересборки или нет.
Это также избавит вас от необходимости запускать ее вручную :)
.К вашему сведению, это обрабатывается в Visual Studio 2010.
А пока вы должны опубликовать в папке, скрыть сборки и повторно подписать развертывание с помощью Mage или MageUI. Это связано с тем, что ClickOnce хеширует сборки, и когда вы их запутываете, он изменяет хеши, и они больше не соответствуют информации в манифесте.
RobinDotNet
Моя компания разрабатывает программу под названием ClickOnceMore, которая идеально подходит для этого сценария. ClickOnceMore - это инструмент ClickOnce, который можно использовать для автоматизации ClickOnce как части большого процесса сборки.
Используя правила включения файлов, вы можете включить свои запутанные сборки в проект ClickOnceMore, а затем построить манифесты ClickOnce с помощью инструмента командной строки ClickOnceMore.
Многие из наших клиентов используют ClickOnceMore для создания манифестов ClickOnce с обфусцированными сборками. Вы можете найти программное обеспечение на www.clickoncemore.net .