Msbuild 使用Web Deploy发布时如何包括umbraco_客户端文件夹?

Msbuild 使用Web Deploy发布时如何包括umbraco_客户端文件夹?,msbuild,umbraco,webdeploy,Msbuild,Umbraco,Webdeploy,将Umbraco作为NuGet软件包安装时,Visual Studio项目中仅包含Umbraco文件夹,而不包括Umbraco_客户端文件夹。原因是不应从Visual Studio中引用umbraco_客户端文件夹的内容。但是,在使用Web Deploy发布网站时,我需要部署umbraco_客户端文件夹 一种解决方案是将umbraco_客户端文件夹包含到VS项目中。此解决方案的缺点是,通过NuGet升级Umbraco会变得烦人且容易出错。您必须记住将umbraco_客户端文件夹排除并重新包含到项

将Umbraco作为NuGet软件包安装时,Visual Studio项目中仅包含Umbraco文件夹,而不包括Umbraco_客户端文件夹。原因是不应从Visual Studio中引用umbraco_客户端文件夹的内容。但是,在使用Web Deploy发布网站时,我需要部署umbraco_客户端文件夹

一种解决方案是将umbraco_客户端文件夹包含到VS项目中。此解决方案的缺点是,通过NuGet升级Umbraco会变得烦人且容易出错。您必须记住将umbraco_客户端文件夹排除并重新包含到项目中


那么有更好的方法吗?

您可以将以下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>

...
自定义文件;
$(将所有文件复制到SingleFolderForpPackageDependson);
umbraco_客户端\%(递归目录)%(文件名)%(扩展名)
如果您想自动将上述代码添加到所有新的Umbraco项目中,您可以创建自己的NuGet软件包。首先,将Umbraco作为一个依赖项。然后添加生成文件夹和.targets文件。在.targets文件中添加上述代码

有关MSBuild脚本的详细信息,请参阅本文: