如何使用 BuildOutputInPackage 将文件夹复制到 nuget 包中

问题描述 投票:0回答:1

我正在尝试将文件夹复制到多目标项目的 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>

鉴于我有

  • 示例/1.txt
  • 示例/2.txt

当存在

TargetPath
时,仅复制第一个文件,并且 msbuild 会发出警告:
{File} not added because the package already contains file {TargetPath}

但是,如果我删除

TargetPath
,所有文件都会被复制,但复制到根目录。

如何将所有文件复制到自定义目录?

c# msbuild nuget nuget-package
1个回答
0
投票

添加文件作为源进行迭代:

  <Target Name="Example">
    <ItemGroup>
      <Files Include="$(ProjectDir)Example\**\*.*" />
      <BuildOutputInPackage Include="%(Files.Identity)">
        <TargetPath>Example/%(Files.Filename)%(Files.Extension)</TargetPath>
      </BuildOutputInPackage>
    </ItemGroup>
  </Target>
© www.soinside.com 2019 - 2024. All rights reserved.