Search code examples
c#nugetnuspec

Nuget package `contentFiles` are not getting copied into the project


I have a Nuget package that generated by msbuild.exe -t:"Pack" command. From the NUSPEC file looks like below.

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>LibraryId</id>
    <version>1.0.0</version>
    <authors>Developer</authors>
    <owners>Company</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package Description</description>
    <repository type="git" url="https://github.com/cilerler/fake.git" />
    <dependencies>
      <group targetFramework=".NETFramework4.8">
        <dependency id="Microsoft.ClearScript" version="6.0.2" exclude="Build,Analyzers" />
        <dependency id="Microsoft.Extensions.Logging.Abstractions" version="3.1.5" exclude="Build,Analyzers" />
        <dependency id="Microsoft.Extensions.Primitives" version="3.1.5" exclude="Build,Analyzers" />
        <dependency id="Microsoft.NETCore.Platforms" version="3.1.1" exclude="Build,Analyzers" />
        <dependency id="NETStandard.Library" version="2.0.3" exclude="Build,Analyzers" />
        <dependency id="Newtonsoft.Json" version="12.0.3" exclude="Build,Analyzers" />
        <dependency id="System.Buffers" version="4.5.1" exclude="Build,Analyzers" />
        <dependency id="System.ComponentModel" version="4.3.0" exclude="Build,Analyzers" />
        <dependency id="System.Memory" version="4.5.4" exclude="Build,Analyzers" />
        <dependency id="System.Numerics.Vectors" version="4.5.0" exclude="Build,Analyzers" />
      </group>
    </dependencies>
    <frameworkAssemblies>
      <frameworkAssembly assemblyName="Microsoft.CSharp" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="mscorlib" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="System.Core" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="System.Data.DataSetExtensions" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="System.Data" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="System" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="System.Net.Http" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="System.Numerics" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="System.Xml" targetFramework=".NETFramework4.8" />
      <frameworkAssembly assemblyName="System.Xml.Linq" targetFramework=".NETFramework4.8" />
    </frameworkAssemblies>
    <contentFiles>
      <files include="any/net48/MyFile.txt" buildAction="Content" />
    </contentFiles>
  </metadata>
</package>

When I add the package into a plain .NetFramework4.8 Console app, MyFile.txt does not show up in the tree, and it doesn't get copied into the bin/Debug folder.

Any idea what it might be? Thanks in advance


Solution

  • Content files are only supported in NuGet 4.0+ and only when using PackageReference in your project. However, the reason that they are not copied to the output folder is that this is the default option. If you want them to be copied, you have to specify it explicitly with copyToOutput="true" in the files tag like this:

    <files include="any/net48/MyFile.txt" buildAction="Content" copyToOutput="true"/>