Search code examples
c#visual-studiomsbuildembedded-resource

Why is VS2019 still copying embedded resources to the output folder?


When i try to embed resources in a .NET Core Webservice project via EmbeddedResource in the .csproj file, these resources are also copied into the output folder, although i choose the option to NOT copy in the build action dropdown-menu.

The part where the resource is embedded looks like this:

<ItemGroup>
  <EmbeddedResource Include="Resources\logging.json" />
</ItemGroup>

In another .NET Core project, which is a library, the resource gets embedded and won't be copied to the output directory.

There, the snippet looks like this:

<ItemGroup>
  <EmbeddedResource Include="LicenseText\*.txt" />
</ItemGroup>

Is there an explanation to this behaviour?


Solution

  • I can reproduce your issue on my side. I checked the official document about EmbeddedResource item, and the metadata introduced like this

    CopyToOutputDirectory Optional string. Determines whether to copy the file to the output directory. Values are: 1. Never. 2. Always. 3. PreserveNewest.

    I tested by adding related metadata into .csproj file manually, but the issue remained.

    <ItemGroup>
      <EmbeddedResource Include="Resources\logging.json">
         <CopyToOutputDirectory>Never</CopyToOutputDirectory> 
      </EmbeddedResource>
    </ItemGroup>
    

    I think this should be a potential issue and I have reported it to Microsoft Developer Community, hope VS product team can fix it and share the insights. Here is the link: Embedded Resources still copy to output directory even set CopyToOutputDirectory to Never.