NuGet包目标 - 如何在构建时将文件复制到目标目录的子文件夹中?

3
我正在尝试将两个文本文件添加到我的NuGet包中,以便当包的用户构建项目时,一个文件会被复制到构建目录的根目录下,但另一个文件则会被复制到根目录的子文件夹中,就像这样:
\bin\Debug\ - 1.TXT
            - SubFolder\  - 2.TXT

这个目录结构是包中程序集的要求,在运行时会在特定位置寻找这些文件。

基于这个https://dev59.com/UmEi5IYBdhLWcg3wldFu#30386836 和这个https://dev59.com/l1cP5IYBdhLWcg3wL3YN#44752745

我能够创建一个将1.txt复制到根目录的目标文件,但当我将该包添加到项目并构建它时,它只会将2.txt复制到根目录。 我按以下方式创建了一个构建文件夹:

enter image description here

我的目标文件如下所示:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <ItemGroup>
  <None Include="$(MSBuildThisFileDirectory)1.txt">
     <Link>1.txt</Link>
     <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </None>
  <None Include="$(MSBuildThisFileDirectory)SubFolder\2.txt">
     <Link>2.txt</Link>
     <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </None>  
 </ItemGroup>
</Project>

如何让它创建子文件夹并将文件复制到该文件夹中?

最初我使用“content”文件夹将我的带有子文件夹的内容文件添加到Nuget包中,但我发现尽管这些文件以正确的目录结构添加到解决方案本身中,但这些文件被设置为“不复制”,因此它们未被复制到生成目录 - 因此我改用了上述方法。 有没有办法结合这两种方法?

1个回答

3

我认为我已经通过以下方法解决了这个问题

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <ItemGroup>
    <RequiredFiles Include="$(MSBuildThisFileDirectory)**\*" />
    <None Include="@(RequiredFiles)">
     <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
     <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </None>  
 </ItemGroup>
</Project>

根据这里的解决方案 https://dev59.com/DGIk5IYBdhLWcg3wN7xj#30316946


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接