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

时间:2019-03-29 13:49:47

标签: nuget nuget-package

我正在尝试将两个文本文件添加到我的nuget软件包中,以便该软件包的用户构建项目时,一个文件被复制到构建目录的根目录,而另一个文件被复制到该目录的子文件夹。像这样的根

\bin\Debug\ - 1.TXT
            - SubFolder\  - 2.TXT

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

基于此https://stackoverflow.com/a/30386836/1462656 还有这个https://stackoverflow.com/a/44752745/1462656

我能够创建将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>

如何获取它来创建SubFolder并将文件复制到该文件夹​​?

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

1 个答案:

答案 0 :(得分:0)

我想我用以下方法解决了

<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://stackoverflow.com/a/30316946/1462656

的解决方案