使用 MSBuild Targets 从 NuGet 包中递归复制文件
Use MSBuild Targets to copy files recursively from NuGet package
我的 NuGet 包构建文件夹中有一个 .targets
文件,然后自动包含在使用 NuGet 包的项目中。
我希望这个 .targets
文件复制 post-build 上的一些文件夹。以下脚本显示了这是如何完成的,但我得到的输出是错误的,因为 %(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>
为了避免使用包版本,您可以使用 MSBuildThisFileDirectory 属性。
MSBuildThisFileDirectory 属性 为您提供了 .targets 文件所在的目录,因此您可以更改 元素以使用相对于该目录的路径,而不必使用版本号。
<FilesToCopy Include="$(MSBuildThisFileDirectory)myfolder\**\*.*"/>
我的 NuGet 包构建文件夹中有一个 .targets
文件,然后自动包含在使用 NuGet 包的项目中。
我希望这个 .targets
文件复制 post-build 上的一些文件夹。以下脚本显示了这是如何完成的,但我得到的输出是错误的,因为 %(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>
为了避免使用包版本,您可以使用 MSBuildThisFileDirectory 属性。
MSBuildThisFileDirectory 属性 为您提供了 .targets 文件所在的目录,因此您可以更改
<FilesToCopy Include="$(MSBuildThisFileDirectory)myfolder\**\*.*"/>