2014-02-19 43 views
2

我需要将文件夹及其中的文件包含到部署过程中。此文件夹不属于该项目的一部分。该文件夹在构建服务器上创建。我不能在项目中包含这些文件。在部署中包含额外的文件

我发现这个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不太好,所以我想我在这里错过了一些东西。

+0

当你说它不工作,你的意思是你的自定义目标CustomCollectFiles没有被调用或被调用,但你的文件仍然没有被包括在内? – cokeman19

+1

您是否尝试过使用PipelineCollectFilesPhaseDependsOn? – CodeFanatic

+0

cokeman:正在调用,但我的文件不包括在内。 – user49126

回答

1

例如,假设您的文件是在一个名为build这是在同一个目录级别解决方案目录的目录,你可以做这样的:

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

这将在$(SolutionDir)..\build复制这些文件到每当解决方案构建时,输出目录$(TargetDir)build的子目录build。修改Include蒙版,DestinationFolder并构建目标名称以满足您的需求。

+0

事情是我需要复制这些文件只在部署。不是每个版本。 – user49126