Hide contentFiles from your nuget packages

When you package compile items with your package (i.e. .cs), they are visible by default in your consumer's project. That's not always what you want. From a github issue on NuGet, I learned a neat trick to hide all the files in your package, automatically! All you need is to include a .props file in your package build folder (i.e. if your package is named Foo, make sure the file ends up build\Foo.props)

<Project>

  <ItemGroup>
    <Compile Update="@(Compile)">
      <Visible Condition="'%(NuGetItemType)' == 'Compile' and '%(NuGetPackageId)' == 'Foo'">false</Visible>
    </Compile>
  </ItemGroup>

</Project>

This works because NuGet generates a .props file containing all your contentFiles items, under the obj folder, which contains both pieces of metadata used above to filter the visibility on items coming from our package.

Last updated