首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Umbraco部署流程

Umbraco部署流程
EN

Stack Overflow用户
提问于 2017-03-09 17:50:56
回答 2查看 619关注 0票数 1

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

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

在构建过程中,是否还发生了将这些文件复制到发布目录的操作?

EN

回答 2

Stack Overflow用户

发布于 2018-12-19 19:44:36

App_Plugins get发布的这个问题实际上是由NuGet的UmbracoCms包配置的。它允许你发布项目,包括Umbraco。但它也会添加额外的文件夹。当在项目上安装Umbraco时,它会向.csproj文件添加2个Import

代码语言:javascript
复制
<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文件中,它引用在MSBuild中定义的属性CopyAllFilesToSingleFolderForPackageDependsOn。此任务在打包文件时执行。在此属性中,它提到了任务AddUmbracoFilesToOutput。此任务可在UmbracoCms.targets中找到。

在这个任务中,它定义了一个在WebDeploy中使用的名为FilesForPackagingFromProject的任务。在这个任务中,它使用了所有名为CustomFilesToInclude的元素。如您所见,下面是一行代码:

代码语言:javascript
复制
  <CustomFilesToInclude Include=".\App_Plugins\**\*">
    <Dir>App_Plugins</Dir>
  </CustomFilesToInclude>

如果您排除这些文件,这并不重要,因为上面的这一行,它将始终添加此文件。

如何解决这个问题?

我们不能更改这个UmbracoCms.targets文件,所以我们必须采用其他选项,因为我们不想更改Umbraco指定这些文件的方式。

我们能做的就是指定排除自己,就像Umbraco做的那样。添加新的目标、ItemGroup并添加元素ExcludeFromPackageFolders,指定Include属性并使用值填充该属性。

代码语言:javascript
复制
<Target Name="ExcludeUmbracoFormsData">
<ItemGroup>
  <ExcludeFromPackageFolders Include="App_Plugins\UmbracoForms\Data">
  </ExcludeFromPackageFolders>
</ItemGroup>
</Target>  

然后添加一个具有属性CopyAllFilesTOSingleFolderForPackageDependsOn的PropertyGroup,并指定您刚刚创建的目标的名称。

代码语言:javascript
复制
<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    ExcludeUmbracoFormsData;
  </CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>

替代

如果您使用的是https://our.umbraco.com/documentation/Add-ons/UmbracoForms/Developer/IFileSystem/ 4.4+,则可以为表单定义不同类型的存储:

票数 1
EN

Stack Overflow用户

发布于 2017-03-11 05:16:17

这在某种程度上取决于你是如何发布的。如果只是通过visual studio发布,可以将一些参数添加到csproj的PropertyGroups中。

代码语言:javascript
复制
<ExcludeFoldersFromDeployment>App_Plugins\UmbracoForms\Data</ExcludeFoldersFromDeployment>

这里也有一些关于这样做的讨论:Web Deployment FAQ。如果你自己打电话给MSBuild,你会发现一些关于ExcludeFoldersFromDeployment的其他方法。

代码语言:javascript
复制
/p:ExcludeFoldersFromDeployment="App_Plugins\UmbracoForms\Data"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42691974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档