添加 umbraco 文件夹以使用 MsBuild 构建
Adding umbraco folders to build with MsBuild
如果我使用 msbuild 构建我的项目,我的解决方案中未包含的所有文件夹都不会部署。有没有办法使用 msbuild 部署 umbraco
和 umbraco_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!
如果我使用 msbuild 构建我的项目,我的解决方案中未包含的所有文件夹都不会部署。有没有办法使用 msbuild 部署 umbraco
和 umbraco_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!