Chryssie / IgnoresAccessChecksToGenerator

Generates reference assemblies where all the internal types & members become public, and applies the IgnoresAccessChecksTo attribute

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IgnoresAccessChecksTo Generator (MSBuild)

NuGet

The IgnoresAccessChecksToAttribute is the reverse of the InternalsVisibleToAttribute - it allows an assembly to declare assemblies whose internals would be visible to it. The attribute class isn't declared in the BCL but is recognized by the CLR (Desktop >= 4.6 and Core), i.e. you can declare it in your code and it would work.

Since there's currently no compiler support for this attribute (I've submitted a PR to Roslyn), this package can be used as a workaround. It generates reference assemblies where all the internal types & members become public, and adds a C# file with the attribute and its instances.

Usage

Just add the package and define the InternalsAssemblyNames property with a semicolon-delimited list of assemblies you need access to.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <InternalsAssemblyNames>AssemblyToGrantAccessTo1;AssemblyToGrantAccessTo2</InternalsAssemblyNames>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="IgnoresAccessChecksToGenerator" Version="0.4.0" PrivateAssets="All" />
  </ItemGroup>

</Project>

By default, the build tasks replaces all method bodies with throw null;. To keep the original bodies, you can specify:

  <PropertyGroup>
    <InternalsAssemblyUseEmptyMethodBodies>false</InternalsAssemblyUseEmptyMethodBodies>
  </PropertyGroup>

About

Generates reference assemblies where all the internal types & members become public, and applies the IgnoresAccessChecksTo attribute

License:MIT License


Languages

Language:C# 100.0%