Процесс развертывания Umbraco Forms

Я использую Umbraco Forms и не хочу, чтобы формы, включенные в среду разработки, были включены в производственную среду; однако я хотел бы, чтобы они были включены в систему контроля версий.

Поэтому моя текущая настройка включает в себя файлы под контролем исходного кода в соответствии со стандартом; Однако для исключения данных форм (App_Plugins/UmbracoForms/Data) я исключил папку из проекта (.CSPROJ). Проблема в том, что после публикации (в файл) файлы данных всегда включаются, даже если они исключены.

Что-то еще происходит в процессе сборки, которая копирует эти файлы в каталог публикации?

1 ответ

Эта проблема, которую публикуют App_Plugins, фактически настраивается пакетом UmbracoCms от NuGet. Это позволяет публиковать проект, в том числе Umbraco. Но это также добавляет дополнительные папки. При установке Umbraco на проект, он добавляет 2 Import в файл.csproj.

<Import Project="..\packages\UmbracoCms.{version_number}\build\UmbracoCms.props" Condition="Exists('..\packages\UmbracoCms.{version_number}\build\UmbracoCms.props')" />
<Import Project="..\packages\UmbracoCms.{version_number}\build\UmbracoCms.targets" Condition="Exists('..\packages\UmbracoCms.{version_number}\build\UmbracoCms.targets')" />

В этом UmbracoCms.props файл это относится к собственности CopyAllFilesToSingleFolderForPackageDependsOn это определено в MSBuild. Эта задача выполняется, когда файлы упаковываются. В этом свойстве упоминается задача AddUmbracoFilesToOutput, Эта задача находится в UmbracoCms.targets,

В рамках этой задачи она определяет задачу с именем FilesForPackagingFromProject который используется в WebDeploy. В этой задаче используются все элементы, названные CustomFilesToInclude, Как видите, есть следующая строка:

  <CustomFilesToInclude Include=".\App_Plugins\**\*">
    <Dir>App_Plugins</Dir>
  </CustomFilesToInclude>

Неважно, если вы исключите файлы, он всегда будет добавлять это из-за строки выше.

Как решить это?

Мы не можем изменить это UmbracoCms.targets файл, поэтому мы должны использовать другие параметры, так как мы не хотим изменять способ, которым Umbraco указал эти файлы.

Что мы можем сделать, так это указать, что мы исключаем себя, делая то же самое, что и Умбрако. Добавьте новую Target, ItemGroup и добавьте элемент ExcludeFromPackageFoldersукажите Include атрибут и заполните это значениями.

<Target Name="ExcludeUmbracoFormsData">
<ItemGroup>
  <ExcludeFromPackageFolders Include="App_Plugins\UmbracoForms\Data">
  </ExcludeFromPackageFolders>
</ItemGroup>
</Target>  

Затем добавьте PropertyGroup со свойством CopyAllFilesTOSingleFolderForPackageDependsOn и укажите имя цели, которую вы только что создали.

<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    ExcludeUmbracoFormsData;
  </CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>

альтернатива

Это зависит от того, как вы делаете публикацию. Если вы просто публикуете через Visual Studio, вы можете добавить некоторые параметры в PropertyGroups вашего csproj.

<ExcludeFoldersFromDeployment>App_Plugins\UmbracoForms\Data</ExcludeFoldersFromDeployment>

Здесь также есть некоторые разговоры об этом: FAQ по веб-развертыванию. Если вы поищите ExcludeFoldersFromDeployment вы найдете другие способы сделать это, если вы сами вызываете MSBuild.

/p:ExcludeFoldersFromDeployment="App_Plugins\UmbracoForms\Data"

csproj PropertyGroup

Другие вопросы по тегам