添加 umbraco 文件夹以使用 MsBuild 构建

Adding umbraco folders to build with MsBuild

如果我使用 msbuild 构建我的项目,我的解决方案中未包含的所有文件夹都不会部署。有没有办法使用 msbuild 部署 umbracoumbraco_client 文件夹? 我试过使用像这样的目标:

https://gist.github.com/aaronpowell/6695293

How can we include the files created by ajaxmin in the msdeploy package created by MSBuild

https://blog.samstephens.co.nz/2010/10/18/msbuild-including-extra-files-multiple-builds/

但是嘿,没有被复制到输出文件夹。我错过了什么吗?

您可以在构建后使用 msbuild target(run after the build ends) in which it calls the msbuild copy task to copy necessary files or folders to output folder. Use AfterTargets="build" 让目标 运行。

在我的机器上运行的目标脚本如下所示:

<Target Name="Copyumbraco" AfterTargets="build">
    <ItemGroup>
      <UmbracoFiles Include="$(ProjectDir)**\umbraco\**\*" />
      <Umbraco_ClientFiles Include="$(ProjectDir)**\umbraco_client\**\*" />
    </ItemGroup>
    <Copy SourceFiles="@(UmbracoFiles)" DestinationFolder="$(OutputPath)\%(RecursiveDir)"/>
    <Copy SourceFiles="@(Umbraco_ClientFiles)" DestinationFolder="$(OutputPath)\%(RecursiveDir)"/>
  </Target>

使用 $(ProjectDir) 属性 定义路径,因此 Msbuild 可以找到您在评论中提到的 project folder 中的这两个文件夹。

\%(RecursiveDir) 设置 msbuild copy task 将文件复制到具有原始文件夹结构的目标路径。如果你只想复制所有文件到输出文件夹,你不需要设置它,那么脚本应该是:

<Target Name="Copyumbraco" AfterTargets="build">
    <ItemGroup>
      <UmbracoFiles Include="$(ProjectDir)**\umbraco\**\*" />
      <Umbraco_ClientFiles Include="$(ProjectDir)**\umbraco_client\**\*" />
    </ItemGroup>
    <Copy SourceFiles="@(UmbracoFiles)" DestinationFolder="$(OutputPath)"/>
    <Copy SourceFiles="@(Umbraco_ClientFiles)" DestinationFolder="$(OutputPath)"/>
  </Target>

将目标脚本添加到您项目的project file(xx.csproj)中,确保您将脚本按以下格式放置,然后在使用msbuild构建项目时它可以工作。

<Project Sdk="Microsoft.NET.Sdk.Web">

  ...

  <Target Name="Copyumbraco" AfterTargets="build">
   ...
  </Target>
</Project>

另外:

对于控制台应用程序、class 库等普通项目,$(OutputPath) 表示输出路径。但是对于网站项目,我们可以使用 $(WebProjectOutputDir) ,提示来自 Mario!