我正在尝试将文件夹复制到多目标项目的 nuget 包中。
我的输入文件夹是
Example
,我希望将其内容复制到 nuget 包中的文件夹 Example
(对于每个 lib 版本)
我正在关注 BuildOutputInPackage 的文档:https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets#advanced-extension-points-to-create-customized-package
我有一个包含以下内容的 .csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net48</TargetFrameworks>
</PropertyGroup>
<PropertyGroup>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);Example</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<Target Name="Example">
<ItemGroup>
<BuildOutputInPackage Include="$(ProjectDir)Example\**\*.*">
<TargetPath>Example</TargetPath>
</BuildOutputInPackage>
</ItemGroup>
</Target>
</Project>
鉴于我有
当存在
TargetPath
时,仅复制第一个文件,并且 msbuild 会发出警告:{File} not added because the package already contains file {TargetPath}
但是,如果我删除
TargetPath
,所有文件都会被复制,但复制到根目录。
如何将所有文件复制到自定义目录?
添加文件作为源进行迭代:
<Target Name="Example">
<ItemGroup>
<Files Include="$(ProjectDir)Example\**\*.*" />
<BuildOutputInPackage Include="%(Files.Identity)">
<TargetPath>Example/%(Files.Filename)%(Files.Extension)</TargetPath>
</BuildOutputInPackage>
</ItemGroup>
</Target>