Sam*_*mWM 8 web-deployment-project visual-studio-2008
目前我已经设置了一个Web部署项目,它将代码编译到该.\Release文件夹中.在构建之后,我想将文件复制到另一台机器上(因为您构建的任何目录都被删除然后重新创建).
用于定义要复制的文件的ItemGroup设置如下:
<ItemGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
<ReleaseFiles Include=".\Release\**\*" />
<OverrideFiles Include="..\website\App_Code\override\site.com\**\*" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
"网站"是用于多个站点的代码,因此在解决方案中设置了多个Web部署项目.
然后,我有AfterBuild目标来复制文件:
<Target Name="AfterBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Copy SourceFiles="@(ReleaseFiles)" ContinueOnError="true" SkipUnchangedFiles="true" DestinationFiles="@(ReleaseFiles->'\\server\web\site.com\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(OverrideFiles)" DestinationFiles="@(OverrideFiles->'\\server\web\site.com\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
Run Code Online (Sandbox Code Playgroud)
但是,ReleaseFiles没有被复制,可能是什么原因造成的?我有错误.\TempBuildDir\folder\subfolder - The process cannot access the file because it is being used by another process.,folder\subfolder每次都可以有所不同,但即使没有出现该消息,文件仍然没有被复制.
问题是,它以前有用过.
核心问题是,在加载MSBuild文件时,正在评估样本中的ItemGroup - 当时,很可能这些文件还不存在.....
因此,您的"ReleaseFiles"和"OverrideFiles"集合为空,然后不会复制任何内容.
你需要做的是在构建发生后动态创建你的ItemGroups (这里引用的文件确实存在):
<CreateItem Include=".\Release\**\*">
<Output TaskParameter="Include" ItemName="ReleaseFiles"/>
</CreateItem>
<CreateItem Include="..\website\App_Code\override\site.com\**\*">
<Output TaskParameter="Include" ItemName="OverrideFiles"/>
</CreateItem>
Run Code Online (Sandbox Code Playgroud)
现在你应该没问题,复制任务应该可行.
渣
| 归档时间: |
|
| 查看次数: |
3369 次 |
| 最近记录: |