Visual studio 获取要复制到TFS生成放置位置的静态内容

Visual studio 获取要复制到TFS生成放置位置的静态内容,visual-studio,visual-studio-2012,tfs,msbuild,tfsbuild,Visual Studio,Visual Studio 2012,Tfs,Msbuild,Tfsbuild,我使用的是TFS 2013/VS 2013 出于各种原因,我需要将一些静态内容复制到TFS构建放置位置。我创建了一个自定义项目类型,它只将目录结构/文件复制到输出路径 我希望TFS随后会获取输出路径中的所有内容并将其复制到放置位置,但事实并非如此。放置位置中未显示我的项目中的任何文件 这是我的项目文件: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" DefaultTargets="Buil

我使用的是TFS 2013/VS 2013

出于各种原因,我需要将一些静态内容复制到TFS构建放置位置。我创建了一个自定义项目类型,它只将目录结构/文件复制到输出路径

我希望TFS随后会获取输出路径中的所有内容并将其复制到放置位置,但事实并非如此。放置位置中未显示我的项目中的任何文件

这是我的项目文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <OutputPath>db\</OutputPath>
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <Target Name="Build">
    <Copy SourceFiles="@(Content)" DestinationFiles="@(Content->'$(OutputPath)%(RelativeDir)%(Filename)%(Extension)')" />
  </Target>
  <Target Name="Clean">
    <Exec Command="rd /s /q $(OutputPath)" Condition="Exists($(OutputPath))" />
  </Target>
  <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
  <ItemGroup>
    <Content Include="**\*.*" Exclude="db\**\*.*;*.csproj;*.rgdbproj;*.vspscc" />
  </ItemGroup>
</Project>

分贝\

在Visual Studio中生成此文件时,我将获得所需的目录结构,以显示在/db文件夹中。

在生成文件中,您可以定义复制文件的目标:

<Target Name="CopySomeFiles">

    <ItemGroup>
        <SomeFiles Include="$(SourceFolder)\*.*"></SomeFiles>
    </ItemGroup>

    <Copy SourceFiles="@(SomeFiles)" DestinationFolder="$(DestFolder)"  SkipUnchangedFiles="false"/>

</Target>

然后,您可以在需要的位置添加此目标,例如,在编译之后:

<Target Name="AfterCompile"
        DependsOnTargets="CopySomeFiles">
</Target>

在TFS 2013中,您可以指定预构建和后构建脚本。您可以运行PowerShell脚本来复制文件。请参见下面关于如何操作的问题。为此,您必须使用TfvcTemplate.12.xaml


我可以通过将所有引用从
OutputPath
更改为
OutDir
来解决此问题。显然,
OutputPath
已被弃用,而
OutDir
正是TFS构建所关注的。以下是我的最终构建脚本:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <OutputPath>db\</OutputPath>
    <OutDir>db\</OutDir>
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <Target Name="Build">
    <Copy SourceFiles="@(Content)" DestinationFiles="@(Content->'$(OutDir)%(RelativeDir)%(Filename)%(Extension)')" />
  </Target>
  <Target Name="Clean">
    <Exec Command="rd /s /q $(OutDir)" Condition="Exists($(OutDir))" />
  </Target>
  <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
  <ItemGroup>
    <Content Include="**\*.*" Exclude="db\**\*.*;*.csproj;*.rgdbproj;*.vspscc" />
  </ItemGroup>
</Project>

分贝\
分贝\

这与我现在所做的有何不同?