Какие файлы должны быть в релизной сборке?

219
25 июля 2017, 15:53

Добрый день!

Похоже я достиг нового этапа в становлении программистом, когда зашел в папку с одной из разработанных программ, и стал немыслимо негодовать с криками "Что за хрень?!!".

Всем нам, еще с тех времен, когда игры качали с торрентов, а для активации и взлома игры нужно было файлы из папки "Crack" поместить в папку с игрой, знакома картина, как должны выглядеть внутренности софта. В этих папках все хорошо структурировано: несколько папок с библиотеками и ресурсами и сам ярлык игры.

Так вот захожу я в папку с своей программой для того, чтобы сделать установочный файл, а там куча ненужной информации.

Сразу хочу сказать, я искал и гуглил информацию по вопросам, которые описаны ниже, но многие темы которые могли бы мне помочь созданы давно и скорей всего люди отвечавшие там не смогут мне быстро дать дополнительные разъяснения.

Буду благодарен любой информации, как личному объяснению, так и ссылкам на умную и нудную документацию.

Программирую на C#, использую для этого Visual Studio 2015 и Visual Studio 2017.

Сами вопросы:

  1. Как разложить библиотеки и файлы программы по соответствующим папкам? Нашел способ с прописыванием в файл с конфигурацией, но неужели это единственный способ? Уверен есть куда более изысканный и красивый способ это сделать!

  2. Зачем нужны файлы .pdb в релизной сборке и возможно ли от них избавиться? И если возможно то как?

  3. Нужны ли файлы .xml в релизной сборке? И если не нужны, то как от них избавиться?

P.s. Файлы .vshost.ext и manifest я догадался как отключить и их назначение знаю))

Всем спасибо за потраченное время и помощь!

Answer 1
  1. В типовом проекте студия сама автоматически сложит все файлы в каталоге out/release как нужно. Наводить порядок вручную не стоит: на это тратится время, а смысла особого в наведении порядка ради порядка нет.

    Если вам всё же нужно что-то нестандартное... Откройте Рихтер CLR via C#, Глава 2 Компоновка, упаковка, развертывание и администрирование приложений и типов, "Алгоритм поиска файлов сборки", там есть краткое описание о том, как ищутся сборке в каталоге приложения (для закрытого развёртывания).

  2. Подключиться отладчиком. Если вам это не нужно - можно отключить в свойствах проекта (закладка Build - Advanced) для release режима. Подробно можно почитать на английском: https://stackoverflow.com/a/5457250/5752652 или у того же Рихтера.

  3. Сильно зависит от того, что это за xml-файлы. Конкретные примеры?

Answer 2
  1. Никак. Не надо ничего раскладывать по отдельным папкам, если это не вызвано какой-то реальной необходимостью (например, механизм загрузки ресурсов может искать сборки в папках с именами ru-ru и en-us).

  2. Нужны для отладки релизной сборки. В окончательный инсталлер их можно не включать, но если есть хоть какая-то вероятность отладки релиза, хотя бы на стадии предрелизного тестирования - стоит сохранить копию pdb. MS есть отдельный "сервер" для хранения символов - набор утилит для организации хранения pdb.

  3. XML документация - файлы с именами someassembly.xml - не нужны, кроме случая, когда ваш продукт - это именно сама сборка. Все остальное - зависит от того, что это за файлы. XML - это просто формат, в файле может лежать что угодно, так что в общем виде заранее оценить его необходимость невозможно.

READ ALSO
EasyHook в RtlGetFullPathName_UEx

EasyHook в RtlGetFullPathName_UEx

Доброе время сутокПомогите пожалуйста составить инъекцию для функции RtlGetFullPathName_UEx

242
Передача параметров в контроллер

Передача параметров в контроллер

У меня есть HtmlBeginForm, вот ее код:

439
перебор массива обьектов на js

перебор массива обьектов на js

подскажите как можно перебрать такой массив на js

394
Упорядывачение данных

Упорядывачение данных

Есть исходный массив:

304