在Visual Studio Post Build事件中复制文件

时间:2014-10-06 07:32:19

标签: visual-studio-2013 xcopy robocopy post-build-event

我希望在构建过程成功后,使用给定的文件扩展名复制所有文件。

的Robocopy

ROBOCOPY %source% %destination% /S *.as?x *.xls? *.mrt

XCOPY

xcopy .\*.as?x %destination% /SY
xcopy .\*.xls? %destination% /SY
xcopy .\*.mrt %destination% /SY

我试图在visual studio的post build部分中插入两种可能性。 RoboCopy退出时出错:错误1命令" ROBOCOPY源目标/ S * .as?x * .xls? * .mrt"退出代码1。 有些文件被复制但文件夹错误(_PublishedWebsites)。

xcopy也会复制到错误的目录(_PublishedWebsites),也不会复制所有文件。

在命令行中,两个命令都按预期工作。

更新

我更新了我的robocopy命令:

ROBOCOPY $(MSBuildProjectDirectory) $(MSBuildProjectDirectory)\..\..\..\EDP\Web\Modules\Invoice\Web /S *.as?x *.xls? *.mrt

现在文件被复制到正确的位置,但robocopy的返回代码会导致visual studio错误。

这是this的帮助下的解决方案:

call ROBOCOPY $(MSBuildProjectDirectory) $(MSBuildProjectDirectory)\..\..\..\EDP\Web\Modules\Invoice\Web /S *.as?x *.xls? *.mrt
if %errorlevel% leq 1 exit 0 else exit %errorlevel%

首选解决方案

<ItemGroup>
    <SourceFiles Include="$(MSBuildProjectDirectory)\**\*.js"/>
    <SourceFiles Include="$(MSBuildProjectDirectory)\**\*.html"/>
    <SourceFiles Include="$(MSBuildProjectDirectory)\**\*.css*"/>
    <SourceFiles Include="$(MSBuildProjectDirectory)\**\*.png"/>
    <SourceFiles Include="$(MSBuildProjectDirectory)\**\*.as?x"/>
</ItemGroup>

<Target Name="AfterBuild">
    <Copy
       SourceFiles="@(SourceFiles)"
       DestinationFiles="@(SourceFiles->'%(MSBuildProjectDirectory)..\..\..\EDP\Web\Modules\DMS\Web\%(RecursiveDir)%(Filename)%(Extension)')"
    />
</Target>

0 个答案:

没有答案