xamarin / xamarin-macios

.NET for iOS, Mac Catalyst, macOS, and tvOS provide open-source bindings of the Apple SDKs for use with .NET managed languages such as C#
Other
2.44k stars 508 forks source link

Xamarin.iOS: The type 'Object' is defined in an assembly that is not referenced #6886

Closed diegostamigni closed 4 years ago

diegostamigni commented 5 years ago

Steps to Reproduce

I'm not sure

Expected Behavior

Solution should build

Actual Behavior

Solution fails to build

Environment

This happens only on the Hosted macOS VM on Azure Pipelines. Specs are here https://github.com/microsoft/azure-pipelines-image-generation/blob/041488181ef31a533661d207ddb8b9e9e5010960/images/macos/macos-10.14-Readme.md

Description of the problem I'm facing

I have a Xamarin (iOS and Android, not Forms) which in its solution has a number of NETStandard libraries I use around. Now, up until now, everything worked great locally and on my CI (Azure Pipeline) where I have two instances, a Windows version for Android, and the macOS 10.14 mentioned above for iOS. In the build steps I have a NET core SDK install task which was set to to install version 2.2.104. This step is used on both Android (Windows, VS2019) and macOS.

Last week I decided to bump the NETCore SDK version to latest (2.2.401) given that soon I'll have to deal with 3.0, plus Mono 6 required by iOS 11 will require NET Core 2.2.300+. So I did, and everything went alright locally, that is: I installed the latest NET core on my Win and Mac machines and built successfully. Then I pushed, updated the NET Core installer tool to take and install SDK v2.2.401, and the weirdness happened:

Models/Common/FieldValueConverter.cs(10,37): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
Models/Common/AvatarUrls.cs(9,4): error CS0012: The type 'Attribute' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
...
...

The above is just an extract of it, basically almost all projects (NETStandard and non) are not building.

So I did what is the most common sense to do: revert the NET Core SDK version back to 2.2.104, and everything built fine.

What is going on here?

whitneyschmidt commented 5 years ago

We only test Xamarin components with version of NET Core that we've shipped. You can see the compatibility chart here:

https://docs.microsoft.com/en-us/visualstudio/mac/net-core-support?view=vsmac-2019

It appears to be broken, someone will take a look at this issue. Thank you for reporting this issue!

radical commented 5 years ago

Which version of mono are you using? Also, could you please share the full diagnostic log or the binary log from the build?

diegostamigni commented 5 years ago

Ah true, I forgot to mention this @radical: Mono 5.18.1 and Mono 6.0.0. Same issue with both.

diegostamigni commented 5 years ago

We only test Xamarin components with version of NET Core that we've shipped. You can see the compatibility chart here:

https://docs.microsoft.com/en-us/visualstudio/mac/net-core-support?view=vsmac-2019

It appears to be broken, someone will take a look at this issue. Thank you for reporting this issue!

I don't understand this chart @whitneyschmidt as I doesn't reflect my case: it is saying that (correct me if I'm wrong) v2.2.1 - v2.2.1xx is not supported, but the version I'm using at the moment for prodaction builds and that hence works just fine is 2.2.104. Also, it says that v2.2.200+ is supported on all VS for Mac versions starting from 8.1, including Preview (I use 8.2 and Preview). Lastly, in the important section at the end of the page:

If you were previously using .NET Core v2.2.1xx with Visual Studio for Mac 8.0, you'll need to manually update to a supported version of .NET Core, as listed in the table above. We recommend either 2.1.700 or 2.2.300

BUT even if I set 2.2.300 as NET Core SDK version, I start getting those build errors. Something ain't look good 😅

orryverducci commented 5 years ago

I'm seeing the same issue with a Xamarin.Mac app referencing a .NET. Standard library.

It's worth looking at dotnet/standard#1269, which seems to be a very similar issue, so far with not much response. I provided full details of what I'm seeing (this exact error) on that issue.

diegostamigni commented 5 years ago

Any news on this?

radical commented 5 years ago

@diegostamigni The diagnostic or binary log, as I was asking earlier, would be extremely helpful!

radical commented 5 years ago

This (https://github.com/xamarin/xamarin-macios/pull/6667) should fix the issue, at least in @orryverducci's case. I can't confirm for @diegostamigni without seeing the logs or getting a test project.

diegostamigni commented 5 years ago

@radical I can't give you build logs for obvious reasons, tho I can try to re-create the issue in a test project.

whitneyschmidt commented 5 years ago

@diegostamigni - if you are able to recreate the issue in a test project please share your project (as well as any logs) with us so that we can try to repro.

snickler commented 5 years ago

Sorry to hijack this, but this happens with Xamarin.Mac Modern projects also on VS4Mac 8.2 and 8.3 preview (all versions).

I just did the following to recreate the issue:

1) Create a new Xamarin.Mac Cocoa project targeting Modern API. 2) Create a new .NET Standard 2.0 library and added a reference to the library in the Xamarin.Mac project 3) Created a class in the .NET Standard 2.0 library that contains a void method which simply assigns a string value to a variable and nothing else. 4) In the Cocoa project's AppDelegate.cs, I create an instance of the library class then call the void method. 5) Build/Rebuild solution 6) /Users/snickler/Projects/NetStandardMac/AppDelegate.cs(17,17): Error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. (CS0012) (NetStandardMac)

I even decided to use a global.json and target .NET Core 2.2.203 SDK just in case it happened to be any of the .NET Core 3 previews. Still a no-go.

Here's screenshots of the code:

image

image

Rebuilding...

Cleaning solution NetStandardMac (Debug)
Build started 9/6/2019 9:45:56 PM.
__________________________________________________
Project "/Users/snickler/Projects/NetStandardMac/NetStandardLib/NetStandardLib.csproj" (Clean target(s)):

Target CoreClean:
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/bin/Debug/netstandard2.0/NetStandardLib.deps.json".
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/bin/Debug/netstandard2.0/NetStandardLib.dll".
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/bin/Debug/netstandard2.0/NetStandardLib.pdb".
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/obj/Debug/netstandard2.0/NetStandardLib.csproj.CoreCompileInputs.cache".
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/obj/Debug/netstandard2.0/NetStandardLib.AssemblyInfoInputs.cache".
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/obj/Debug/netstandard2.0/NetStandardLib.AssemblyInfo.cs".
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/obj/Debug/netstandard2.0/NetStandardLib.dll".
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/obj/Debug/netstandard2.0/NetStandardLib.pdb".
    Deleting file "/Users/snickler/Projects/NetStandardMac/NetStandardLib/obj/Debug/netstandard2.0/NetStandardLib.csprojAssemblyReference.cache".
__________________________________________________
Project "/Users/snickler/Projects/NetStandardMac/NetStandardMac.csproj" (Clean target(s)):

Target CoreClean:
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/actool/_PartialAppManifest.items".
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/actool/_BundleResourceWithLogicalName.items".
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/ibtool-manifests/Main.storyboardc".
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/ibtool/Main.storyboardc/MainMenu.nib".
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/ibtool/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib".
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/ibtool/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib".
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/ibtool/Main.storyboardc/Info.plist".
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/NetStandardMac.csprojAssemblyReference.cache".
    Deleting file "/Users/snickler/Projects/NetStandardMac/obj/Debug/NetStandardMac.csproj.CoreCompileInputs.cache".
Target _GetProjectReferenceTargetFrameworkProperties:
    __________________________________________________
    Project "/Users/snickler/Projects/NetStandardMac/NetStandardMac.csproj" is building "/Users/snickler/Projects/NetStandardMac/NetStandardLib/NetStandardLib.csproj" (GetTargetFrameworks target(s)):

Target _CleanBindingResourcePackage:
    Directory "/Users/snickler/Projects/NetStandardMac/bin/Debug/NetStandardMac.resources" doesn't exist. Skipping.
Target _CleanAppBundle:
    Directory "bin/Debug/NetStandardMac.app/" doesn't exist. Skipping.
Target _CleanIntermediateToolOutput:
    Removing directory "obj/Debug/actool".
    Removing directory "obj/Debug/ibtool".
    Directory "obj/Debug/metal" doesn't exist. Skipping.
    Directory "obj/Debug/scntool" doesn't exist. Skipping.
    Directory "obj/Debug/TextureAtlas" doesn't exist. Skipping.
    Removing directory "obj/Debug/".

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:00.16

Building solution NetStandardMac (Debug)
Build started 9/6/2019 9:45:56 PM.
__________________________________________________
Project "/Users/snickler/Projects/NetStandardMac/NetStandardLib/NetStandardLib.csproj" (Build target(s)):

Target GenerateTargetFrameworkMonikerAttribute:
  Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
Target CoreCompile:
    /Library/Frameworks/Mono.framework/Versions/6.0.0/lib/mono/msbuild/Current/bin/Roslyn/csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1701,1702,2008 /nostdlib+ /platform:x64 /errorreport:prompt /warn:4 /define:TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0 /errorendlocation /preferreduilang:en-US /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/mscorlib.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/netstandard.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.AppContext.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Collections.Concurrent.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Collections.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Collections.NonGeneric.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Collections.Specialized.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.Composition.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.Primitives.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Console.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Core.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Data.Common.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Data.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Contracts.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Debug.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Process.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Tools.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Diagnostics.Tracing.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Drawing.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Drawing.Primitives.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Dynamic.Runtime.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Globalization.Calendars.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Globalization.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Globalization.Extensions.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.Compression.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.FileSystem.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.IsolatedStorage.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.Pipes.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Linq.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Linq.Expressions.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Linq.Parallel.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Linq.Queryable.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Http.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.NameResolution.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.NetworkInformation.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Ping.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Primitives.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Requests.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Security.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.Sockets.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.WebSockets.Client.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Net.WebSockets.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Numerics.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ObjectModel.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Reflection.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Reflection.Extensions.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Reflection.Primitives.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Resources.Reader.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Resources.ResourceManager.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Resources.Writer.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Extensions.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Handles.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.InteropServices.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Numerics.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Claims.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.Principal.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Security.SecureString.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ServiceModel.Web.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Text.Encoding.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Text.RegularExpressions.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Overlapped.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Tasks.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Thread.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.ThreadPool.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Threading.Timer.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Transactions.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.ValueTuple.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Web.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Windows.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.Linq.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.ReaderWriter.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.Serialization.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XDocument.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XmlDocument.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XmlSerializer.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XPath.dll /reference:/Users/snickler/.nuget/packages/netstandard.library/2.0.3/build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll /debug+ /debug:portable /filealign:512 /optimize- /out:obj/Debug/netstandard2.0/NetStandardLib.dll /target:library /warnaserror- /utf8output /deterministic+ TestStuff.cs "/var/folders/c8/yx7h11950v938qtfpmgctxhm0000gp/T/.NETStandard,Version=v2.0.AssemblyAttributes.cs" obj/Debug/netstandard2.0/NetStandardLib.AssemblyInfo.cs /warnaserror+:NU1605
    TestStuff.cs(9,20,9,27): warning CS0219: The variable 'testvar' is assigned but its value is never used
Done building target "CoreCompile" in project "NetStandardLib.csproj".
Target CopyFilesToOutputDirectory:
    Copying file from "/Users/snickler/Projects/NetStandardMac/NetStandardLib/obj/Debug/netstandard2.0/NetStandardLib.dll" to "/Users/snickler/Projects/NetStandardMac/NetStandardLib/bin/Debug/netstandard2.0/NetStandardLib.dll".
    NetStandardLib -> /Users/snickler/Projects/NetStandardMac/NetStandardLib/bin/Debug/netstandard2.0/NetStandardLib.dll
    Copying file from "/Users/snickler/Projects/NetStandardMac/NetStandardLib/obj/Debug/netstandard2.0/NetStandardLib.pdb" to "/Users/snickler/Projects/NetStandardMac/NetStandardLib/bin/Debug/netstandard2.0/NetStandardLib.pdb".

Done building project "NetStandardLib.csproj".
__________________________________________________
Project "/Users/snickler/Projects/NetStandardMac/NetStandardMac.csproj" (Build target(s)):

Target _BeforeCoreCompileImageAssets:
    Directory "obj/Debug/actool" doesn't exist. Skipping.
Target _CoreCompileImageAssets:
    Tool /Applications/Xcode.app/Contents/Developer/usr/bin/actool execution started with arguments: --errors --warnings --notices --output-format xml1 --output-partial-info-plist /Users/snickler/Projects/NetStandardMac/obj/Debug/actool/partial-info.plist --app-icon AppIcon --minimum-deployment-target 10.14 --platform macosx --compile /Users/snickler/Projects/NetStandardMac/obj/Debug/actool/bundle /Users/snickler/Projects/NetStandardMac/obj/Debug/actool/cloned-assets/Assets.xcassets
Target _CoreCompileInterfaceDefinitions:
    Tool /Applications/Xcode.app/Contents/Developer/usr/bin/ibtool execution started with arguments: --errors --warnings --notices --output-format xml1 --minimum-deployment-target 10.14 --sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk --compilation-directory /Users/snickler/Projects/NetStandardMac/obj/Debug/ibtool /Users/snickler/Projects/NetStandardMac/Main.storyboard
      BundleResources Output:
        obj/Debug/ibtool/Main.storyboardc/MainMenu.nib
        obj/Debug/ibtool/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib
        obj/Debug/ibtool/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib
        obj/Debug/ibtool/Main.storyboardc/Info.plist
      OutputManifests Output:
        obj/Debug/ibtool-manifests/Main.storyboardc
Target _CoreCompileColladaAssets:
  Skipping target "_CoreCompileColladaAssets" because it has no inputs.
Target _GetProjectReferenceTargetFrameworkProperties:
    __________________________________________________
    Project "/Users/snickler/Projects/NetStandardMac/NetStandardMac.csproj" is building "/Users/snickler/Projects/NetStandardMac/NetStandardLib/NetStandardLib.csproj" (GetTargetFrameworks target(s)):

Target ResolveProjectReferences:
    __________________________________________________
    Project "/Users/snickler/Projects/NetStandardMac/NetStandardMac.csproj" is building "/Users/snickler/Projects/NetStandardMac/NetStandardLib/NetStandardLib.csproj" (GetTargetPath target(s)):

    __________________________________________________
    Project "/Users/snickler/Projects/NetStandardMac/NetStandardMac.csproj" is building "/Users/snickler/Projects/NetStandardMac/NetStandardLib/NetStandardLib.csproj" (GetNativeManifest target(s)):

Target GenerateTargetFrameworkMonikerAttribute:
  Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
Target CoreCompile:
    /Library/Frameworks/Mono.framework/Versions/6.0.0/lib/mono/msbuild/Current/bin/Roslyn/csc.exe /noconfig /nowarn:1701,1702,2008 /nostdlib+ /platform:x64 /errorreport:prompt /warn:4 /define:__UNIFIED__;__MACOS__;DEBUG /errorendlocation /preferreduilang:en-US /reference:/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac/mscorlib.dll /reference:/Users/snickler/Projects/NetStandardMac/NetStandardLib/bin/Debug/netstandard2.0/NetStandardLib.dll /reference:/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac/System.Core.dll /reference:/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac/System.dll /reference:/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac/Facades/System.Drawing.Common.dll /reference:/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac/Xamarin.Mac.dll /debug+ /debug:portable /optimize- /out:obj/Debug/NetStandardMac.exe /target:exe /utf8output Main.cs AppDelegate.cs ViewController.cs ViewController.designer.cs "/var/folders/c8/yx7h11950v938qtfpmgctxhm0000gp/T/Xamarin.Mac,Version=v2.0.AssemblyAttributes.cs"
    AppDelegate.cs(16,17,16,24): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
Done building target "CoreCompile" in project "NetStandardMac.csproj" -- FAILED.

Done building project "NetStandardMac.csproj" -- FAILED.

Build FAILED.

TestStuff.cs(9,20,9,27): warning CS0219: The variable 'testvar' is assigned but its value is never used
AppDelegate.cs(16,17,16,24): error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
    1 Warning(s)
    1 Error(s)

Time Elapsed 00:00:05.67

========== Build: 1 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Build: 1 error, 1 warning
michaelstonis commented 4 years ago

I found that if I manually open the .csproj and add in the line <Reference Include="netstandard" /> that it will get macos libraries and applications to build. The references pane will complain, but everything goes back to actually compiling again.

image

chamons commented 4 years ago

@snickler - Can you please attach your test project and the list of dotnet core versions you have installed?

chamons commented 4 years ago

In general, this is caused by a mistmatch between .net core and your SDK.

I know a number of people have jumped in on this bug, but we really need a self contained sample showing the problem and the list of dotnet core installed.

snickler commented 4 years ago

@chamons - Adding a reference to "netstandard" before "System" seems to be the resolution to this. From what I've seen, it's likely a known issue specifically with Xamarin.Mac.

EDIT: Oops, I didn't realize that it was your blog post that fixed it for me.

https://medium.com/@donblas/xamarin-mac-and-netstandard2-708a06890302

snickler commented 4 years ago

@chamons - With .NET Core 3 SDK GA, I no longer have to do this. Adding the "netstandard" reference to the projects was the fix for me while the preview builds were out. It's still weird that it didn't seem to respect my global.json at the time I made the original comments, though.

chamons commented 4 years ago

Adding a reference to netstandard should not be necessary outside a hack to work around bugs.

It is generally "needed" when the netstandard assembly resolution is broken.

To ask again:

I know a number of people have jumped in on this bug, but we really need a self contained sample showing the problem and the list of dotnet core installed.
snickler commented 4 years ago

.NET Core SDKs installed: 2.1.505 [/usr/local/share/dotnet/sdk] 2.1.701 [/usr/local/share/dotnet/sdk] 2.2.203 [/usr/local/share/dotnet/sdk] 3.0.100-preview5-011568 [/usr/local/share/dotnet/sdk] 3.0.100-preview8-013656 [/usr/local/share/dotnet/sdk] 3.0.100-preview9-014004 [/usr/local/share/dotnet/sdk] 3.0.100 [/usr/local/share/dotnet/sdk]

At the time I originally had the issue, I didn't have preview 9 and the GA SDK installed. I can't reproduce this problem now after 3.0.100 was installed, which likely means that the existence of the preview sdks made it blow up.

NetStandardMac.zip

michaelstonis commented 4 years ago

After updating to the latest Visual Studio for Mac (Version 8.3 (build 1805)), I no longer experience this issue and can build the applications without needing to add the netstandard reference.

chamons commented 4 years ago

Yes, installing .NET core SDKs too new can cause breakages of this nature.

If anyone can reproduce the issue with the latest build, please re-open this issue with a list of .NET core SDKs installed and sample project.

snickler commented 4 years ago

@chamons - My question is, why does the global.json get ignored? Is it just looking at all the .NET Core SDKS that exist and choosing the latest available?

Also, thanks for clearing up that we should be weary of preview SDKs

chamons commented 4 years ago

I am unsure, maybe @radical would know.