Игнорируйте файл из удаления во время WebDeploy
-
15-11-2019 - |
Вопрос
Я использую Teamcity для создания и развертывания коллекции приложений MVC через MSBuild и WebDeploy.
на шаге, предыдущей к моему решению Создание / развертывание, я копирую App_offline.htm в каталог развертывания, чтобы я мог выполнять обновления SQL и другие шаги управления веб-решением, включая сборку.
Одна из настроек в WebDeploy в том, чтобы удалить файлы, которые не включены в проект, или не нужно для запуска сайта.Это удаляет файл my app_offline.htm каждый раз.Пока я понимаю, это своего рода желаемый результат, есть ли способ исключить этот файл от удаления из каталога развертывания при развертывании?
Я пытался добавить элементгруппу с опцией ExcudeFrompackageFiles, без результатов.
Решение
I had a similar problem, wanting to keep minified javascript files in the deployment package even though they're not part of the project.
I added a custom MSBuild target for this, that works for me:
<!-- ====== Package the minify files ===== -->
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles1;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<PropertyGroup>
<AfterAddIisSettingAndFileContentsToSourceManifest>
MakeEmptyFolders
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="CustomCollectFiles1">
<ItemGroup>
<!-- =====Controls\Javascript folder ==== -->
<_CustomFilesForRootFolder Include=".\Controls\Javascript\*.min.js">
<DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension) </DestinationRelativePath>
</_CustomFilesForRootFolder>
<FilesForPackagingFromProject Include="%(_CustomFilesForRootFolder.Identity)">
<DestinationRelativePath>.\Controls\Javascript\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
Другие советы
This other question " Custom app_offline.htm file during publish " suggests one possible way for the final result you describe:
I use my own
app_offline.htm_
file in the solution, which gets published. My deployment script then renames it (removing the trailing _) to make it active.
I can then run my db scripts/do whatever then rename the file bringing the site back.