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

时间:2013-06-21 10:26:34

标签: msbuild umbraco webdeploy

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

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

那么有更好的方法吗?

1 个答案:

答案 0 :(得分: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/