Umbraco表单部署流程

Umbraco表单部署流程,umbraco,umbraco-contour,Umbraco,Umbraco Contour,我使用的是Umbraco表单,不希望开发环境中包含的表单包含在生产环境中;但是,我希望它们包含在源代码管理中 因此,根据标准,我当前的设置包括源代码管理下的文件;但是,为了排除表单数据(App_Plugins/UmbracoForms/data),我从项目(.CSPROJ)中排除了该文件夹。问题是,在发布(到文件)之后,数据文件始终被包括在内,即使它们被排除在外 在生成过程中是否有其他事情正在将这些文件复制到发布目录?这在某种程度上取决于您是如何进行发布的。如果您只是通过visual studi

我使用的是Umbraco表单,不希望开发环境中包含的表单包含在生产环境中;但是,我希望它们包含在源代码管理中

因此,根据标准,我当前的设置包括源代码管理下的文件;但是,为了排除表单数据(App_Plugins/UmbracoForms/data),我从项目(.CSPROJ)中排除了该文件夹。问题是,在发布(到文件)之后,数据文件始终被包括在内,即使它们被排除在外


在生成过程中是否有其他事情正在将这些文件复制到发布目录?

这在某种程度上取决于您是如何进行发布的。如果您只是通过visual studio发布,则可以向csproj的属性组添加一些参数

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

这个发布应用程序插件的版本实际上是由NuGet的UmbracoCms包配置的。它允许您发布包括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.targets
文件,因此我们必须采取其他选项,因为我们不想更改Umbraco指定这些文件的方式

我们所能做的就是像翁布拉科那样做。 添加一个新目标、一个项目组并添加元素
ExcludeFromPackageFolders
,指定
Include
属性并用值填充

<Target Name="ExcludeUmbracoFormsData">
<ItemGroup>
  <ExcludeFromPackageFolders Include="App_Plugins\UmbracoForms\Data">
  </ExcludeFromPackageFolders>
</ItemGroup>
</Target>  
备选方案

  • 如果您使用的是UmbracoForms 4.4+,则可以为表单定义不同类型的存储:

我已经尝试过了,还通过Visual Studio专门排除了该文件夹,在这两种情况下,该文件夹都会重新出现在已发布的目录中。请注意,这仅适用于UmbracoForms,而对于其他文件夹(例如,我将排除/js),它不会出现在已发布的目录中。请检查您的csproj文件,并检查该文件夹是否未明确包含在其他位置?您如何发布?你能告诉我复制这个的步骤吗?一个使用VisualStudio的普通文件发布。右键单击项目>发布>自定义>文件系统。请注意,此问题仅适用于Umbraco表单(据我所知)。
  <CustomFilesToInclude Include=".\App_Plugins\**\*">
    <Dir>App_Plugins</Dir>
  </CustomFilesToInclude>
<Target Name="ExcludeUmbracoFormsData">
<ItemGroup>
  <ExcludeFromPackageFolders Include="App_Plugins\UmbracoForms\Data">
  </ExcludeFromPackageFolders>
</ItemGroup>
</Target>  
<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    ExcludeUmbracoFormsData;
  </CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>