Развертывание .NET Winforms
-
02-07-2019 - |
Вопрос
Можно ли как-нибудь объединить все ресурсы в один исполняемый файл, такой как app.config и связанные с ним библиотеки DLL?
Похоже, что некоторые приложения делают это, такие как eMule.
Я не хочу, чтобы мой app.config сидел там и ждал редактирования.
Спасибо
Решение
Конечно, в Solution Explorer
(предполагая здесь Visual Studio, поскольку вы не упоминаете) Right-click
и Properties
файлов, которые вы хотите включить.
Там должен быть вариант для Build Action
который вы можете установить на Embedded Resource
.
Другие советы
Конечно, вы можете встраивать ресурсы.Перейдите в свойства приложения и выберите вкладку "Ресурсы".Все ресурсы, добавленные в них, будут находиться в основном двоичном коде.
Почему бы не иметь app.config, ожидающий редактирования?Многие профессиональные программные пакеты содержат файлы конфигурации и ini, которые можно свободно редактировать.
Чувак, Вот почему это конфигурационный файл!Предполагается, что это позволит вам изменить способ работы приложения на d-fly b!
Если вас беспокоят ваши настройки, которые не следует изменять, попробуйте другое хранилище, класс, базу данных, реестр, плоский файл и т.д. Или просто сохраните где-нибудь реплику, которую можно использовать для замены испорченной.
Объединение библиотек dll - ILMerge
Объединять конфигурационный файл не стоит, поскольку предполагается, что это способ настроить поведение приложения без его перекомпиляции.Если вам это не нужно - просто жестко запрограммируйте все (либо сам код, либо в виде встроенных ресурсов).
Если вам все еще нужна возможность настройки, вы можете скрыть файл в профиле пользователя.
Смотрите, например, http://www.codeproject.com/KB/cs/SystemConfiguration.aspx
Если вы не хотите, чтобы настройки менялись, перенесите их в код, а не в конфигурацию.
Я согласен с некоторыми пользователями.На самом деле, это противоречит цели "config".Просто жестко запрограммируйте всю информацию в общем вызове класса "настройки", а затем ссылайтесь на что-то вроде
_serverIP = настройки.Почтовый сервер.
Единственные элементы, которые следует учитывать, - это helperfiles (которые, скажем, к чему-то относятся), изображения, сторонние библиотеки dll (хотя я не уверен в этом) ... и это лишь некоторые из них.
Проблема с файлами .net app.config заключается в том, что их изменение может изменить способ работы приложения.
Встраивание ресурсов - это не проблема, это тот конкретный файл, о котором я беспокоюсь.
Я уже использовал Thinstall в качестве термоусадочной оболочки для виртуализации приложений:
https://thinstall.com/help/index.php?_netsupport.htm
Это делает то, что вы хотите, т.е.объединяет все зависимости вашего приложения в один исполняемый файл, включая файл .configs.
Вам также не помешало бы изучить другие программные инструменты для термоусадочной упаковки.