使用MSBuild Targets从NuGet包递归复制文件

时间:2015-11-25 08:12:31

标签: msbuild nuget msbuild-task

我的NuGet包构建文件夹中有一个.targets文件,然后自动包含在使用NuGet包的项目中。

我希望这个.targets文件在构建后复制一些文件夹。下面的脚本显示了如何完成,但是我得到的输出是错误的,因为%(RecursiveDir)从我用于包的版本号的第一张外卡开始。

我的问题:如何动态指定.targets文件中的MyPackage版本,以便删除第一个通配符?

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="AfterBuild">
    <ItemGroup>
      <!-- MyPackage.* should be replaced by MyPackage.1.0.0.4534. But the version is set by NuGet.exe pack -Version -->
      <FilesToCopy Include="$(SolutionDir)packages\MyPackage.*\myfolder\**\*.*"/>
    </ItemGroup>
    <Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(SolutionDir)bin\$(Configuration)\myfolder\%(RecursiveDir)"/>
  </Target>
</Project>

1 个答案:

答案 0 :(得分:2)

为了避免使用软件包版本,您可以使用MSBuildThisFileDirectory属性。

MSBuildThisFileDirectory属性为您提供.targets文件所在的目录,以便您可以更改&lt; FilesToCopy&gt;元素使用相对于该目录的路径,您不必使用版本号。

<FilesToCopy Include="$(MSBuildThisFileDirectory)myfolder\**\*.*"/>