У меня есть требование, когда мне нужно заархивировать некоторые файлы после создания файла решения.
Может ли это быть достигнуто автоматически после создания моего проекта в режиме Release/Debug.
У меня есть требование, когда мне нужно заархивировать некоторые файлы после создания файла решения.
Может ли это быть достигнуто автоматически после создания моего проекта в режиме Release/Debug.
Обычно я не помещаю такие вещи, как создание zip файлов, инсталляторов, пакетов NuGet и т.д. в мой фактический проект.
Зачем? Потому что, когда я помещаю его туда, он запускается каждый раз, когда я создаю проект в Visual Studio, например, когда я отлаживаю.
Но zip файлы, установщики и т.д. нужны только тогда, когда я делаю релиз, поэтому я не хочу ждать их повторного создания каждый раз, когда я нажимаю F5 в Visual Studio.
Чтобы сделать выпуск, я обычно создаю командный файл, который выполняет файл проекта MSBuild, который создает все, что необходимо для выпуска.
IMO, создающий ZIP файл, также входит в этот файл проекта MSBuild.
Вы можете найти всю необходимую информацию в этих двух предыдущих ответах:
Плюс, вот пример файла проекта MSBuild из одного из моих проектов, который выполняет следующие действия:
Самое замечательное в этом подходе заключается в том, что я могу сделать выпуск, включающий все, что я только что перечислил, одним щелчком мыши (запуск пакетного файла).
Создание всего этого материала занимает некоторое время, но поскольку оно не является частью решения Visual Studio, оно не запускается каждый раз, когда я выполняю сборку в Visual Studio - я выполняю его только тогда, когда мне это действительно нужно.
Использование 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 файла в каждой сборке.
Перейдите к свойствам вашего проекта и на вкладке "События" запишите свои команды в области событий Post-Build. Команды там выполняются так же, как (или как) командный файл Cmd.
Также: там есть несколько доступных "макросов", которые могут ссылаться на папки проекта и т.д. Проверьте это.
И, чтобы добавить комментарий Jason, вы также можете вызвать сам командный файл как команду post-build.
(Одно предупреждение о событиях после сборки: они выполняются после сборки, но если у вас есть цели CSC, они компилируются после сборки и после событий после сборки. Если вы хотите egcopy выходные файлы этих целей CSC вам нужно сделать это в событии post-compile
.)