在部署中包含额外文件

时间:2014-02-19 12:49:24

标签: msbuild

我需要在部署过程中包含一个文件夹及其中的文件。此文件夹不是项目的一部分。此文件夹在构建服务器上创建。我不能在项目中包含这些文件。

我发现这个answer非常有帮助。

我编辑了我的Web应用程序csproj文件,并将其添加到文件的末尾

  <PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>CustomCollectFiles;$(CopyAllFilesToSingleFolderForPackageDependsOn);</CopyAllFilesToSingleFolderForPackageDependsOn>
    <CopyAllFilesToSingleFolderForMsdeployDependsOn>CustomCollectFiles;$(CopyAllFilesToSingleFolderForPackageDependsOn);</CopyAllFilesToSingleFolderForMsdeployDependsOn>   
  </PropertyGroup>

  <Target Name="CustomCollectFiles">
    <ItemGroup> 
      <_CustomFiles Include="Workspace\build\**\*" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>Workspace\build</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>  

它应包含文件夹Workspace\build中的所有文件,并将其放在部署目录中的同一位置。

但不幸的是它没有用。我对msbuild不太满意,所以我想我在这里遗漏了一些东西。

2 个答案:

答案 0 :(得分:1)

例如,假设您的文件位于名为build的目录中,该目录与解决方案目录位于同一目录级别,您可以这样做:

<Target Name="AfterBuild">
    <CreateItem Include="$(SolutionDir)..\build\**\*.*">
        <Output TaskParameter="Include" ItemName="AdditionalFiles" />
    </CreateItem>
    <Copy SourceFiles="@(AdditionalFiles)" DestinationFolder="$(TargetDir)build" />
</Target>

每当构建解决方案时,这会将$(SolutionDir)..\build中的这些文件复制到输出目录build的{​​{1}}子目录中。修改$(TargetDir)build掩码,Include并构建目标名称以满足您的需求。

答案 1 :(得分:0)