2
我在我的NuGet包構建文件夾中有一個.targets
文件,然後它自動包含在使用NuGet包的項目中。使用MSBuild目標從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>
您可以通過使用[MSBuildThisFileDirectory](https://msdn.microsoft.com/en-us/library/ms164309.aspx)來避免使用該版本。這會給你.targets文件所在的目錄,這樣你就可以改變include相對於該目錄的工作,而不必使用版本號。 –
另外,如果你有一個目標文件將被每個用戶的項目導入,你不應該使用像'AfterBuild'這樣的'保留'名字,如果用戶還定義了一個名爲AfterBuild的目標,該怎麼辦?相反,使用像'目標名稱=「PrettyUniqueTargetName」AfterTargets =「Build」' – stijn
@MattWard我會接受這個答案。我不知道這些屬性。 – Marnix