Skip to content

[Release/2.0.0] Reduce desktop targeted reference assemblies in 2.0 release #23462

@ericstj

Description

@ericstj

See https://github.com/dotnet/corefx/issues/23505.

The use of reference assemblies in 2.0 for desktop-targeted packages and netstandard support targets has resulted in a number of tooling issues.

To help relieve these, we can dial back the number of reference assemblies we use.

  1. Don't use reference assemblies at all for the support package / targets.
  2. For packages which have reference facades which are full facades, don't set the reference assembly bit.
    • Remove reference assembly attribute from partial ref facade when it is a full facade buildtools#1663
    • Needs to be ported to release/2.0.0
    • The following packages will benefit from this:
      • Microsoft.Win32.Registry
      • System.CodeDom
      • System.ComponentModel.Annotations
      • System.Configuration.ConfigurationManager
      • System.Data.SqlClient
      • System.IO.Packaging
      • System.IO.Ports
      • System.Security.AccessControl
      • System.Security.Cryptography.Cng
        • for all but net461 see below
      • System.Security.Cryptography.Pkcs
      • System.Security.Cryptography.ProtectedData
      • System.Security.Cryptography.Xml
      • System.Security.Principal.Windows
      • System.ServiceProcess.ServiceController
      • System.Threading.Tasks.Extensions
  3. For the remaining packages, consider excluding the desktop reference and instead using the implementation assembly as the reference (as we did in 1.x). These are the packages we shipped in 2.0 that contained reference assemblies with typedefs for desktop:
    • System.Numerics.Vectors
    • System.IO.FileSystem.AccessControl
    • System.IO.Pipes.AccessControl
    • System.Reflection.TypeExtensions
    • System.Security.Cryptography.Cng
      • only on net461 as a result of the netstandard remapping. Fix here is to drop those types from the reference for the netfx build.
    • System.Threading.AccessControl

1 is a must-fix for 2.0. For 2 and 3 we'd need to ship the individual packages and for that I'd like a shiproom read.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions