Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xamarin.iOS is missing .NET Standard 2.1 types #17064

Closed
chamons opened this issue Sep 25, 2019 · 10 comments
Closed

Xamarin.iOS is missing .NET Standard 2.1 types #17064

chamons opened this issue Sep 25, 2019 · 10 comments

Comments

@chamons
Copy link
Contributor

chamons commented Sep 25, 2019

From @frankbuckley on Tue, 24 Sep 2019 15:26:58 GMT

Using version 13.2 and referencing .NET Standard 2.1 class library and annotating with a NotNullAttribute results in error when compiling with linking on.

Steps to Reproduce

  1. Create .NET Standard class library, choosing .NET Standard 2.1
  2. Link from iOS project
  3. Set linking to sdk or all
  4. Build

Expected Behavior

Project compiles successfully

Actual Behavior

MTOUCH : error MT2101: Can't resolve the reference 'System.Void System.Diagnostics.CodeAnalysis.NotNullAttribute::.ctor()', referenced from the method 'System.Void TestLib.Check::NotNull(System.Object)' in 'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
Done building target "_CompileToNative" in project "TestApp.csproj" -- FAILED.

Environment

=== Visual Studio Community 2019 for Mac ===

Version 8.3 (build 1805)
Installation UUID: 810f3bf8-337b-43c5-bf8f-395e1eb8f7d6
	GTK+ 2.24.23 (Raleigh theme)
	Xamarin.Mac 5.16.1.24 (d16-3 / 08809f5b)

	Package version: 604000198

=== Mono Framework MDK ===

Runtime:
	Mono 6.4.0.198 (2019-06/fe64a4765e6) (64-bit)
	Package version: 604000198

=== NuGet ===

Version: 5.3.0.6192

=== .NET Core SDK ===

SDK: /usr/local/share/dotnet/sdk/3.0.100/Sdks
SDK Versions:
	3.0.100
	3.0.100-rc1-014190
	2.2.301
	2.2.300
	2.1.700
MSBuild SDKs: /Library/Frameworks/Mono.framework/Versions/6.4.0/lib/mono/msbuild/Current/bin/Sdks

=== .NET Core Runtime ===

Runtime: /usr/local/share/dotnet/dotnet
Runtime Versions:
	3.0.0
	3.0.0-rc1-19456-20
	2.2.6
	2.2.5
	2.1.13
	2.1.11

=== Xamarin.Profiler ===

Version: 1.6.12.26
Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler

=== Updater ===

Version: 11

=== Apple Developer Tools ===

Xcode 11.0 (14936)
Build 11A420a

=== Xamarin.Mac ===

Version: 6.2.0.42 (Visual Studio Community)
Hash: 5e8a208b
Branch: d16-3
Build date: 2019-09-17 14:19:30-0400

=== Xamarin.iOS ===

Version: 13.2.0.42 (Visual Studio Community)
Hash: 5e8a208b
Branch: d16-3
Build date: 2019-09-17 14:19:30-0400

=== Xamarin Designer ===

Version: 16.3.0.230
Hash: bbe518670
Branch: remotes/origin/d16-3-xcode11
Build date: 2019-09-17 18:39:30 UTC

=== Xamarin.Android ===

Version: 10.0.0.43 (Visual Studio Community)
Commit: xamarin-android/d16-3/8af1ca8
Android SDK: /Users/frankbuckley/Library/Developer/Xamarin/android-sdk-macosx
	Supported Android versions:
		5.0 (API level 21)
		5.1 (API level 22)
		6.0 (API level 23)
		7.0 (API level 24)
		7.1 (API level 25)
		8.0 (API level 26)
		8.1 (API level 27)

SDK Tools Version: 26.1.1
SDK Platform Tools Version: 28.0.2
SDK Build Tools Version: 28.0.3

Build Information: 
Mono: mono/mono/2019-06@7af64d1ebe9
Java.Interop: xamarin/java.interop/d16-3@5836f58
LibZipSharp: grendello/LibZipSharp/d16-3@71f4a94
LibZip: nih-at/libzip/rel-1-5-1@b95cf3f
ProGuard: xamarin/proguard/master@905836d
SQLite: xamarin/sqlite/3.27.1@8212a2d
Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-3@cb41333

=== Microsoft Mobile OpenJDK ===

Java SDK: /Users/frankbuckley/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25
1.8.0-25
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL

=== Android SDK Manager ===

Version: 1.4.0.65
Hash: c33b107
Branch: remotes/origin/d16-3
Build date: 2019-09-19 20:42:44 UTC

=== Android Device Manager ===

Version: 1.2.0.115
Hash: 724ea69
Branch: remotes/origin/d16-3
Build date: 2019-09-19 20:43:06 UTC

=== Xamarin Inspector ===

Version: 1.4.3
Hash: db27525
Branch: 1.4-release
Build date: Mon, 09 Jul 2018 21:20:18 GMT
Client compatibility: 1

=== Build Information ===

Release ID: 803001805
Git revision: df50511ccb08d4d84a53939f1d7fc0b40cbb0ee1
Build date: 2019-09-20 16:10:55+00
Build branch: release-8.3
Xamarin extensions: da8d448cd65f2cc87c5e6dc7e2c2ca7b96d20c72

=== Operating System ===

Mac OS X 10.14.6
Darwin 18.7.0 Darwin Kernel Version 18.7.0
    Tue Aug 20 16:57:14 PDT 2019
    root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64

Build Logs

https://gist.github.com/frankbuckley/359e39d83d3453b5734fb27d8fa110ed#file-log-txt

Example Project (If Possible)

TestApp.zip

Copied from original issue xamarin/xamarin-macios#7087

@akoeplinger akoeplinger changed the title Error MT2101: Can't resolve NotNullAttribute with .NET Standard 2.1 when linking enabled Xamarin.iOS is missing .NET Standard 2.1 types Sep 25, 2019
@akoeplinger
Copy link
Member

akoeplinger commented Sep 25, 2019

Discovered by this XI customer issue: xamarin/xamarin-macios#7087

It looks like we didn't fully update with the latest NS2.1 API additions as part of #11430.

I ran a API comparison on dotnet/standard against the Xamarin.iOS 13.0 stable release and it shows these missing members:

Compat issues with assembly netstandard:
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.StringNormalizationExtensions' in the contract but not the implementation.
TypesMustExist : Type 'System.Buffers.ArrayBufferWriter<T>' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'System.Buffers.ReadOnlySequence<T>.FirstSpan.get()' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Buffers.SequenceReader<T>' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Buffers.SequenceReaderExtensions' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'System.Buffers.StandardFormat.TryParse(System.ReadOnlySpan<System.Char>, System.Buffers.StandardFormat)' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.DataRowComparer' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.DataRowComparer<TRow>' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.DataRowExtensions' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.DataTableExtensions' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.EnumerableRowCollection' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.EnumerableRowCollection<TRow>' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.EnumerableRowCollectionExtensions' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.OrderedEnumerableRowCollection<TRow>' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.TypedTableBase<T>' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Data.TypedTableBaseExtensions' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.AllowNullAttribute' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.DisallowNullAttribute' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.MaybeNullAttribute' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.NotNullAttribute' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'System.Diagnostics.CodeAnalysis.NotNullWhenAttribute' does not exist in the implementation but it does exist in the contract.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Globalization.GlobalizationExtensions' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.CompilerServices.IsByRefLikeAttribute' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.CompilerServices.IsReadOnlyAttribute' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.CompilerServices.YieldAwaitable' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Runtime.CompilerServices.YieldAwaitable' in the contract but not the implementation.
TypeCannotChangeClassification : Type 'System.Runtime.CompilerServices.YieldAwaitable' is marked as readonly in the contract so it must also be marked readonly in the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.CompilerServices.IsReadOnlyAttribute' exists on 'System.Runtime.CompilerServices.YieldAwaitable.YieldAwaiter' in the contract but not the implementation.
TypeCannotChangeClassification : Type 'System.Runtime.CompilerServices.YieldAwaitable.YieldAwaiter' is marked as readonly in the contract so it must also be marked readonly in the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.BStrWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.BStrWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComAwareEventInfo' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.ComAwareEventInfo' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComEventInterfaceAttribute' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.ComEventInterfaceAttribute' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComEventsHelper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.ComEventsHelper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.ComSourceInterfacesAttribute' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.CurrencyWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.CurrencyWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.CustomQueryInterfaceMode' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.CustomQueryInterfaceResult' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.DispatchWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.DispatchWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ErrorWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.ErrorWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ICustomAdapter' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.ICustomAdapter' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ICustomQueryInterface' in the contract but not the implementation.
MembersMustExist : Member 'System.Runtime.InteropServices.SequenceMarshal.TryRead<T>(System.Buffers.SequenceReader<System.Byte>, T)' does not exist in the implementation but it does exist in the contract.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.UnknownWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.UnknownWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.VarEnum' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.VarEnum' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.VariantWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'System.Runtime.InteropServices.VariantWrapper' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ADVF' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.BIND_OPTS' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.BINDPTR' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.CALLCONV' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.CONNECTDATA' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.DATADIR' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.DESCKIND' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.DISPPARAMS' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.DVASPECT' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ELEMDESC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.EXCEPINFO' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.FILETIME' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.FORMATETC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.FUNCDESC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.FUNCFLAGS' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.FUNCKIND' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IAdviseSink' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IAdviseSink' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IBindCtx' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IBindCtx' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IConnectionPoint' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IConnectionPointContainer' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IDLDESC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IDLFLAG' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumConnectionPoints' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumConnections' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumConnections' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumFORMATETC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumMoniker' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumString' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumString' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IEnumVARIANT' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IMoniker' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IMoniker' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IMPLTYPEFLAGS' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.INVOKEKIND' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IPersistFile' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IPersistFile' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IRunningObjectTable' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.GuidAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IStream' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.IStream' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeComp' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeComp' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeInfo' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeInfo' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeInfo2' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeLib' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeLib' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeLib2' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Runtime.InteropServices.InterfaceTypeAttribute' exists on 'System.Runtime.InteropServices.ComTypes.ITypeLib2' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.LIBFLAGS' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.PARAMDESC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.PARAMFLAG' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.STATDATA' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.STATSTG' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.STGMEDIUM' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.SYSKIND' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.TYMED' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.TYPEATTR' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.TYPEDESC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.TYPEFLAGS' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.TYPEKIND' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.TYPELIBATTR' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.VARDESC' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.VARFLAGS' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Runtime.InteropServices.ComTypes.VARKIND' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.SecureStringMarshal' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.AesCryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.AesManaged' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.DES' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.DESCryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.MD5CryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.PasswordDeriveBytes' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.RC2' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.RC2CryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.Rijndael' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.RijndaelManaged' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.RNGCryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.SHA1CryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.SHA1Managed' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.SHA256CryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.SHA256Managed' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.SHA384CryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.SHA384Managed' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.SHA512CryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.SHA512Managed' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Security.Cryptography.TripleDESCryptoServiceProvider' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Text.RegularExpressions.RegexRunner' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.ComponentModel.EditorBrowsableAttribute' exists on 'System.Text.RegularExpressions.RegexRunnerFactory' in the contract but not the implementation.
CannotRemoveAttribute : Attribute 'System.Xml.Serialization.XmlRootAttribute' exists on 'System.Xml.Schema.XmlSchema' in the contract but not the implementation.
Total Issues: 162

The EditorBrowsableAttribute entries don't really affect us, but the rest does.

/cc @EgorBo @steveisok @marek-safar

@marek-safar
Copy link
Member

Yeah, that's a serious issue. Some CodeAnalysis attributes are compiler referenced all the time with C#8

/cc @steveisok

@EgorBo
Copy link
Member

EgorBo commented Sep 25, 2019

Yeah we are missing changes from dotnet/standard#1349 (Jul 18 2019) and few more. EditorBrowsableAttribute is a noise (it can be ignored in the diff tool via a special parameter)

@frankbuckley
Copy link

@akoeplinger, @marek-safar, @EgorBo - thanks for the quick investigation

Any idea on when a fix might be released?

This breaks all sorts of stuff - for example, using Entity Framework 3.0 - and presumable any other libraries that are producing .NET Standard 2.1 assemblies referencing nullable attributes -

Error MT2101: Can't resolve the reference 'System.Void System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute::.ctor(System.Boolean)', referenced from the method 'System.Void Microsoft.EntityFrameworkCore.Utilities.Check::DebugAssert(System.Boolean,System.String)' in 'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. (MT2101) (EFTest)

@marek-safar
Copy link
Member

We are working on getting this fix out with the first service release

@frankbuckley
Copy link

We are working on getting this fix out with the first service release

Great - thanks

akoeplinger pushed a commit that referenced this issue Sep 27, 2019
jonpryor added a commit to dotnet/android that referenced this issue Sep 27, 2019
akoeplinger pushed a commit that referenced this issue Sep 30, 2019
Contributes to #17064

* Add System.Data.DataSetExtensions to mobile profiles
akoeplinger pushed a commit to akoeplinger/mono that referenced this issue Sep 30, 2019
Contributes to mono#17064

* Add System.Data.DataSetExtensions to mobile profiles
akoeplinger added a commit that referenced this issue Sep 30, 2019
* Update NETStandard2.1 APIs (#17080)

Contributes to #17064

* Add System.Data.DataSetExtensions to mobile profiles

* Bump API snapshot submodule
jonpryor added a commit to dotnet/android that referenced this issue Oct 1, 2019
@akoeplinger akoeplinger reopened this Oct 1, 2019
akoeplinger added a commit to akoeplinger/xamarin-macios that referenced this issue Oct 1, 2019
…missing NS2.1 APIs

See mono/mono#17064.

The 2019-08 version of the fix adds a new assembly with NS2.1 APIs that we stubbed out in 2019-06: System.Data.DataSetExtensions.dll
akoeplinger added a commit to dotnet/android that referenced this issue Oct 1, 2019
…missing NS2.1 APIs

See mono/mono#17064.

The 2019-08 version of the fix adds a new assembly with NS2.1 APIs that we stubbed out in 2019-06: System.Data.DataSetExtensions.dll

Commit diff: mono/mono@d8441de...5281037
akoeplinger added a commit to akoeplinger/xamarin-android that referenced this issue Oct 1, 2019
…missing NS2.1 APIs

See mono/mono#17064.

The 2019-08 version of the fix adds a new assembly with NS2.1 APIs that we stubbed out in 2019-06: System.Data.DataSetExtensions.dll

Commit diff: mono/mono@d8441de...5281037
monojenkins pushed a commit to monojenkins/xamarin-macios that referenced this issue Oct 1, 2019
…missing NS2.1 APIs

See mono/mono#17064.

The 2019-08 version of the fix adds a new assembly with NS2.1 APIs that we stubbed out in 2019-06: System.Data.DataSetExtensions.dll
akoeplinger added a commit to akoeplinger/xamarin-android that referenced this issue Oct 1, 2019
… to add missing NS2.1 APIs

See mono/mono#17064.

The 2019-08 version of the fix adds a new assembly with NS2.1 APIs that we stubbed out in 2019-06: System.Data.DataSetExtensions.dll

Commit diff: mono/mono@d8441de...5281037
dalexsoto pushed a commit to xamarin/xamarin-macios that referenced this issue Oct 2, 2019
…missing NS2.1 APIs (#7147)

See mono/mono#17064.

The 2019-08 version of the fix adds a new assembly with NS2.1 APIs that we stubbed out in 2019-06: System.Data.DataSetExtensions.dll
dalexsoto pushed a commit to xamarin/xamarin-macios that referenced this issue Oct 2, 2019
…missing NS2.1 APIs (#7150)

See mono/mono#17064.

The 2019-08 version of the fix adds a new assembly with NS2.1 APIs that we stubbed out in 2019-06: System.Data.DataSetExtensions.dll
jonpryor pushed a commit to dotnet/android that referenced this issue Oct 2, 2019
Changes: mono/mono@d8441de...5281037

Context: mono/mono#17064

Add a new `System.Data.DataSetExtensions.dll` assembly to the BCL
which contains new .NET Standard 2.1 APIs.
jonpryor pushed a commit to dotnet/android that referenced this issue Oct 2, 2019
Changes: mono/mono@d8441de...5281037

Context: mono/mono#17064

Add a new `System.Data.DataSetExtensions.dll` assembly to the BCL
which contains new .NET Standard 2.1 APIs.
@frankbuckley
Copy link

We are working on getting this fix out with the first service release

Great - thanks

I can confirm that Xamarin iOS 13.2.0.47 fixes the problem I was seeing - I can successfully build and test apps referencing the nullable reference types attributes in .NET Standard 2.1 with linking enabled.

When is the service release expected?

@chamons
Copy link
Contributor Author

chamons commented Oct 7, 2019

We expect the servicing release to happen first half of this week for Xamarin.iOS and Mac.

@akoeplinger
Copy link
Member

The updates were released, so I'm closing this here :)

@aaronfranke
Copy link

What is the status of this? How do you use .NET Standard 2.1 with Mono or Xamarin? This comment on this issue indicates that you can't use .NET Standard with Mono: dotnet/standard#1689 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants