You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
PolySharp with InternalsVisibleTo produces CS0433 #103
Using PolySharp in a netstandard2.0 project that uses InternalsVisibleToAttribute to expose internals to another net80 project, will cause that other project to fail to compile. This is because the types generated by PolySharp have internal visibility and collide with the types net80 provides.
Reproduction Steps
I have a library project that targets netstandard2.0 and I need to consume it from both net48 and net80 targets:
System.Runtime.CompilerServices.IsExternalInit.g.cs(4,115): Error CS0433 : The type 'IsExternalInit' exists in both 'Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' and 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
System.Runtime.CompilerServices.RequiresLocationAttribute.g.cs(4,115): Error CS0433 : The type 'RequiresLocationAttribute' exists in both 'Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' and 'System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
System info
This section should contain useful info such as:
PolySharp NuGet version: 1.14.1
Operating system version: macOS 14.5
Visual Studio version, or .NET SDK/runtime version: 8.0.302
After adding PrivateAssets="all" to the package reference, the repro is fixed: <PackageReference Include="PolySharp" Version="1.14.1" PrivateAssets="all" />.
However that didn't solve the problem, but was in fact a result of me trying to produce a minimal repro. After adding net48 to the test project and adding PolySharp as a dependency, the problem re-appears:
This build error could then be fixed by adding a condition on the package reference: <PackageReference Include="PolySharp" Version="1.14.1" PrivateAssets="all" Condition="$(TargetFramework) != 'net8.0'" />.
Removing the multi-targetting, but keeping PolySharp as a dependency, the error can be reproduced like this:
Is this something PolySharp would be able to support: consuming a library targeting netstandard2.0 which uses PolySharp, and then a project itself targeting net8.0 also using PolySharp?
Activity
Bouke commentedon Jul 15, 2024
After adding
PrivateAssets="all"to the package reference, the repro is fixed:<PackageReference Include="PolySharp" Version="1.14.1" PrivateAssets="all" />.However that didn't solve the problem, but was in fact a result of me trying to produce a minimal repro. After adding
net48to the test project and adding PolySharp as a dependency, the problem re-appears:This build error could then be fixed by adding a condition on the package reference:
<PackageReference Include="PolySharp" Version="1.14.1" PrivateAssets="all" Condition="$(TargetFramework) != 'net8.0'" />.Removing the multi-targetting, but keeping PolySharp as a dependency, the error can be reproduced like this:
Is this something PolySharp would be able to support: consuming a library targeting
netstandard2.0which uses PolySharp, and then a project itself targetingnet8.0also using PolySharp?YoshiRulz commentedon Dec 15, 2024
Duplicate of #50?
Sergio0694 commentedon May 25, 2026
Yeah, duplicate of #50 (which is fixed now).