我正在使用Umbraco表单,不希望包含在开发环境中的表单包含在生产环境中;但是,我希望将它们包含在源代码控制中。
因此,按照标准,我的当前设置包括源代码管理下的文件;但是,为了排除表单数据(App_Plugins/UmbracoForms/ data ),我从项目中排除了该文件夹(.CSPROJ)。问题是,在发布(到文件)之后,数据文件总是被包括在内,即使它们被排除了。
在构建过程中,是否还发生了将这些文件复制到发布目录的操作?
发布于 2018-12-19 19:44:36
App_Plugins get发布的这个问题实际上是由NuGet的UmbracoCms包配置的。它允许你发布项目,包括Umbraco。但它也会添加额外的文件夹。当在项目上安装Umbraco时,它会向.csproj文件添加2个Import。
<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的元素。如您所见,下面是一行代码:
<CustomFilesToInclude Include=".\App_Plugins\**\*">
<Dir>App_Plugins</Dir>
</CustomFilesToInclude>如果您排除这些文件,这并不重要,因为上面的这一行,它将始终添加此文件。
如何解决这个问题?
我们不能更改这个UmbracoCms.targets文件,所以我们必须采用其他选项,因为我们不想更改Umbraco指定这些文件的方式。
我们能做的就是指定排除自己,就像Umbraco做的那样。添加新的目标、ItemGroup并添加元素ExcludeFromPackageFolders,指定Include属性并使用值填充该属性。
<Target Name="ExcludeUmbracoFormsData">
<ItemGroup>
<ExcludeFromPackageFolders Include="App_Plugins\UmbracoForms\Data">
</ExcludeFromPackageFolders>
</ItemGroup>
</Target> 然后添加一个具有属性CopyAllFilesTOSingleFolderForPackageDependsOn的PropertyGroup,并指定您刚刚创建的目标的名称。
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
ExcludeUmbracoFormsData;
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>替代
如果您使用的是https://our.umbraco.com/documentation/Add-ons/UmbracoForms/Developer/IFileSystem/ 4.4+,则可以为表单定义不同类型的存储:
发布于 2017-03-11 05:16:17
这在某种程度上取决于你是如何发布的。如果只是通过visual studio发布,可以将一些参数添加到csproj的PropertyGroups中。
<ExcludeFoldersFromDeployment>App_Plugins\UmbracoForms\Data</ExcludeFoldersFromDeployment>这里也有一些关于这样做的讨论:Web Deployment FAQ。如果你自己打电话给MSBuild,你会发现一些关于ExcludeFoldersFromDeployment的其他方法。
/p:ExcludeFoldersFromDeployment="App_Plugins\UmbracoForms\Data"

https://stackoverflow.com/questions/42691974
复制相似问题