使用 Web Deploy 发布时如何包含 umbraco_client 文件夹?

Posted

技术标签:

【中文标题】使用 Web Deploy 发布时如何包含 umbraco_client 文件夹?【英文标题】:How to include the umbraco_client folder when publishing with Web Deploy? 【发布时间】:2013-06-21 10:26:34 【问题描述】:

将 Umbraco 作为 NuGet 包安装时,只有 umbraco 文件夹包含在 Visual Studio 项目中,而不是 umbraco_client 文件夹。原因是不应从 Visual Studio 引用 umbraco_client 文件夹的内容。但是当使用 Web Deploy 发布网站时,我需要部署 umbraco_client 文件夹。

一种解决方案是将 umbraco_client 文件夹包含到 VS 项目中。这个解决方案的缺点是通过 NuGet 升级 Umbraco 很烦人并且容易出错。您必须记住将 umbraco_client 文件夹排除并重新包含到项目中。

那么有更好的方法吗?

【问题讨论】:

【参考方案1】:

您可以将以下 MSBuild 脚本添加到 .csproj 文件中。

<Project>
...
   <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
                        CustomCollectFiles;
                        $(CopyAllFilesToSingleFolderForPackageDependsOn);
                </CopyAllFilesToSingleFolderForPackageDependsOn>
  </PropertyGroup>
  <Target Name="CustomCollectFiles"]]>
    <ItemGroup>
      <_umbraco_client_files Include="umbraco_client\**\*" />
      <FilesForPackagingFromProject Include="%(_umbraco_client_files.Identity)"]]>
        <DestinationRelativePath>umbraco_client\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>

    </ItemGroup>
    </Target>

</Project>

如果您想自动将上述代码添加到所有新的 Umbraco 项目中,您可以创建自己的 NuGet 包。首先将 Umbraco 作为依赖项。然后添加一个 Build 文件夹,然后添加一个 .targets 文件。在 .targets 文件中添加上述代码。

有关 MSBuild 脚本的详细信息,请参阅这篇文章:http://blog.samstephens.co.nz/2010-10-18/msbuild-including-extra-files-multiple-builds/

【讨论】:

以上是关于使用 Web Deploy 发布时如何包含 umbraco_client 文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IIS 上配置 Web Deploy 发布功能,以便开发人员可以发布?

IIS支持web deploy发布

Web Deploy发布网站一条龙解决方案

如何从使用 mvn deploy 生成的 Maven 源包中排除目标文件夹?

Visual Studio + web deploy部署web服务器到IIS过程记录

Visual Studio使用Web Deploy远程发布网站及其配置