Мы столкнулись с той же проблемой с ClickOnce и .NET Reactor. Мы отказались от запутывания.
Да, вы правы. ClickOnce необходимо извлечь версию файла, его зависимости, производителя и т. Д. Из файла. ClickOnce пытается загрузить сборку, которая больше не является сборкой после выполнения запутывания. Теперь это обычный двоичный файл .exe.
Есть один ужасный обходной путь, который отлично сработал для меня, но руководство проекта отвергло эту идею.
Создай и запутай все свои двоичные файлы. Упакуйте их в zip (или любой другой) файл на основе события AfterBuild. Пометьте почтовый индекс как «Файл данных» (Настройки проекта -> Опубликовать -> Файлы приложения ... -> Состояние публикации -> Файл данных). После этого создайте единственную не запутанную исполняемую (.exe) сборку. Который просто распаковывает и запускает один из ваших запутанных исполняемых файлов. Настройка ClickOnce опубликует развертывание для этого нового исполняемого файла.
РЕДАКТИРОВАТЬ: пожалуйста, спросите, если я не был достаточно ясен.