A minimal example of using .NET 6 for an app that uses macOS native APIs
Start with a console template: dotnet new console.
In the csproj,
- Change the target framework to
net6.0-macos - Specify the runtime identifier
osx-x64 - Add
<SelfContained>true</SelfContained>
During previews, add a NuGet.config so you get packages such as microsoft.macos.runtime.osx-x64
Add an Info.plist.
Your project now references Cocoa. You can do using Foundation for low-level types like NSString, and using AppKit for GUI types like NSTextView.
As of preview 3, you must run the binary inside the bundle for the libraries to be found correctly, e.g.:
bin/Debug/net6.0-macos/osx-x64/net6-console-mac-sample.app/Contents/MacOS/net6-console-mac-sample
This will not work:
dotnet bin/Debug/net6.0-macos/osx-x64/net6-console-mac-sample.dll