Search code examples
nuget

nuget contentFiles: is a binary file instead of a text file


Adding a binary file to the "contentFiles" of my nuget package leads to a build error in my C# project.

CSC : error CS2015: '...\0.0.14\contentFiles\any\any\archive.7z' is a binary file instead of a text file [...]

My goal is to have this binary file in my build output folder after dotnet build and dotnet publish.

details:

# .nuspec
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        ...
        
        <contentFiles>
            <files include="archive.7z" flatten="true" buildAction="None" copyToOutput="true" />
        </contentFiles>
        
    </metadata>

    <files>
        <file src="content/archive.7z" target="contentFiles\any\any" />
    </files>
</package>
# folder structure
├───content
│   └───archive.7z
└───.nuspec
# .csproj file
  <ItemGroup>
    <PackageReference Include="my-nuget-package-name" Version="0.0.14" />
  </ItemGroup>

Solution

  • Be sure to add the path to contentFiles "any/any/archive.7z"

    <files include="any/any/archive.7z" flatten="true" buildAction="None" copyToOutput="true" />
    

    so the correct .nuspec file should look like this:

    # .nuspec
    <?xml version="1.0"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
        <metadata>
            ...
            
            <contentFiles>
                <files include="any/any/archive.7z" flatten="true" buildAction="None" copyToOutput="true" />
            </contentFiles>
            
        </metadata>
    
        <files>
            <file src="content/archive.7z" target="contentFiles\any\any" />
        </files>
    </package>