Подтвердить что ты не робот

Почтовые файлы после завершения сборки в Visual Studio

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

Может ли это быть достигнуто автоматически после создания моего проекта в режиме Release/Debug.

4b9b3361

Ответ 1

Обычно я не помещаю такие вещи, как создание zip файлов, инсталляторов, пакетов NuGet и т.д. в мой фактический проект.
Зачем? Потому что, когда я помещаю его туда, он запускается каждый раз, когда я создаю проект в Visual Studio, например, когда я отлаживаю.
Но zip файлы, установщики и т.д. нужны только тогда, когда я делаю релиз, поэтому я не хочу ждать их повторного создания каждый раз, когда я нажимаю F5 в Visual Studio.

Чтобы сделать выпуск, я обычно создаю командный файл, который выполняет файл проекта MSBuild, который создает все, что необходимо для выпуска.
IMO, создающий ZIP файл, также входит в этот файл проекта MSBuild.

Вы можете найти всю необходимую информацию в этих двух предыдущих ответах:

Плюс, вот пример файла проекта MSBuild из одного из моих проектов, который выполняет следующие действия:

  • создать проект
  • выполнить тесты модулей
  • создайте две папки выпуска с двоичными файлами (одна DLL и одна .exe)
  • создайте два zip файла, по одному для каждой папки с двоичными файлами
  • создать пакет NuGet для DLL
  • создать настройку ClickOnce для .exe
  • автоматически устанавливает правильный номер версии для всех

Самое замечательное в этом подходе заключается в том, что я могу сделать выпуск, включающий все, что я только что перечислил, одним щелчком мыши (запуск пакетного файла).
Создание всего этого материала занимает некоторое время, но поскольку оно не является частью решения Visual Studio, оно не запускается каждый раз, когда я выполняю сборку в Visual Studio - я выполняю его только тогда, когда мне это действительно нужно.

Ответ 2

Использование powershell, только при выполнении сборки Release:
if $(ConfigurationName) == Release (powershell Compress-Archive -Path '$(TargetDir)*.dll', '$(TargetDir)*.pdb', '$(TargetDir)*.config' -DestinationPath '$(SolutionDir)PublishOutput\YourNameHere.zip' -Force)

Он только застегивает файлы dll, pdb и config.
-Force используется для перезаписывания zip файла в каждой сборке.

Ответ 3

Перейдите к свойствам вашего проекта и на вкладке "События" запишите свои команды в области событий Post-Build. Команды там выполняются так же, как (или как) командный файл Cmd.

Также: там есть несколько доступных "макросов", которые могут ссылаться на папки проекта и т.д. Проверьте это.

И, чтобы добавить комментарий Jason, вы также можете вызвать сам командный файл как команду post-build.

(Одно предупреждение о событиях после сборки: они выполняются после сборки, но если у вас есть цели CSC, они компилируются после сборки и после событий после сборки. Если вы хотите egcopy выходные файлы этих целей CSC вам нужно сделать это в событии post-compile.)