<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Justin Wojciechowski</title>
    <description>The latest articles on DEV Community by Justin Wojciechowski (@wojo).</description>
    <link>https://dev.to/wojo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3857906%2F9132e60b-a6a8-4195-ba5e-e17b6cfc0b18.png</url>
      <title>DEV Community: Justin Wojciechowski</title>
      <link>https://dev.to/wojo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wojo"/>
    <language>en</language>
    <item>
      <title>Swift .NET Bindings: The Objective Sharpie Replacement for .NET MAUI and iOS</title>
      <dc:creator>Justin Wojciechowski</dc:creator>
      <pubDate>Thu, 02 Apr 2026 15:53:47 +0000</pubDate>
      <link>https://dev.to/wojo/swift-net-bindings-the-objective-sharpie-replacement-for-net-maui-and-ios-88f</link>
      <guid>https://dev.to/wojo/swift-net-bindings-the-objective-sharpie-replacement-for-net-maui-and-ios-88f</guid>
      <description>&lt;p&gt;Objective Sharpie is no longer maintained. It doesn't work with modern Xcode without workarounds, and it has zero support for Swift-only frameworks — meaning StoreKit 2, SwiftUI, WeatherKit, Swift Charts, and the growing list of Swift-first Apple APIs are completely out of reach for .NET developers.&lt;/p&gt;

&lt;p&gt;If you're building .NET MAUI or .NET iOS apps today and need a native Swift library, your options have been to write fragile proxy libraries by hand, fight with Objective-C bridging headers, or simply go without.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/justinwojo/swift-dotnet-bindings" rel="noopener noreferrer"&gt;&lt;strong&gt;swift-dotnet-bindings&lt;/strong&gt;&lt;/a&gt; changes that. One command. Any xcframework. Ready-to-use NuGet package.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is swift-dotnet-bindings?
&lt;/h2&gt;

&lt;p&gt;It's an open-source binding generator that takes compiled Swift or Objective-C frameworks (.xcframework) and produces complete, ready-to-compile C# binding projects. No manual intervention, no proxy layers, no bridging headers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One command to go from xcframework to NuGet package:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install the template&lt;/span&gt;
dotnet new &lt;span class="nb"&gt;install &lt;/span&gt;SwiftBindings.Templates

&lt;span class="c"&gt;# Create a binding project&lt;/span&gt;
dotnet new swift-binding &lt;span class="nt"&gt;-n&lt;/span&gt; MyLibrary.Swift.iOS

&lt;span class="c"&gt;# Copy your xcframework in, then build + pack&lt;/span&gt;
dotnet build
dotnet pack
&lt;span class="c"&gt;# → Produces a fully documented NuGet package ready to drop into any .NET MAUI or .NET iOS project&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. From xcframework to usable NuGet package in minutes, not hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Replace Objective Sharpie?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/xamarin/cross-platform/macios/binding/objective-sharpie/" rel="noopener noreferrer"&gt;Objective Sharpie&lt;/a&gt; was the standard tool for creating iOS bindings in Xamarin and early .NET MAUI. But it has serious limitations that make it increasingly impractical:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Objective Sharpie&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;swift-dotnet-bindings&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Swift support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None — requires manual proxy libraries&lt;/td&gt;
&lt;td&gt;Full — classes, structs, enums, protocols, generics, async, closures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Output quality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Littered with &lt;code&gt;[Verify]&lt;/code&gt; attributes requiring manual cleanup&lt;/td&gt;
&lt;td&gt;Clean, ready-to-compile C# with no manual fixup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Xcode compatibility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Broken on modern Xcode without workarounds&lt;/td&gt;
&lt;td&gt;Works with current Xcode and toolchains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maintenance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unmaintained&lt;/td&gt;
&lt;td&gt;Actively developed, MIT licensed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SwiftUI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not possible&lt;/td&gt;
&lt;td&gt;Automatic UIHostingController bridge generation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mixed frameworks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Objective-C only&lt;/td&gt;
&lt;td&gt;Handles mixed Swift + Objective-C (e.g., Stripe)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Project generation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Partial — still requires manual setup&lt;/td&gt;
&lt;td&gt;Complete .csproj + NuGet packaging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Limited, outdated&lt;/td&gt;
&lt;td&gt;Auto-generated XML doc comments from Swift source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Time to first binding&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hours to days of manual cleanup&lt;/td&gt;
&lt;td&gt;Minutes — generate, build, pack&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  What About NativeLibraryInterop?
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://github.com/CommunityToolkit/Maui.NativeLibraryInterop" rel="noopener noreferrer"&gt;.NET MAUI Community Toolkit NativeLibraryInterop&lt;/a&gt; is another approach developers turn to for consuming native libraries. It provides scaffolding to help you write Swift proxy code that bridges to C# through Objective-C interop. However, it also hasn't been updated in over a year.&lt;/p&gt;

&lt;p&gt;While NativeLibraryInterop makes the proxy approach more structured, it still requires you to manually write and maintain Swift wrapper code for every API you want to expose. For large libraries with hundreds of types and methods, that's a significant amount of hand-written boilerplate — and it needs to be updated every time the native library changes.&lt;/p&gt;

&lt;p&gt;swift-dotnet-bindings eliminates this entirely. There's no proxy code to write or maintain — the generator reads the compiled framework directly and produces the complete binding automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  SwiftUI Interop for .NET MAUI
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Unique in the ecosystem&lt;/strong&gt;: swift-dotnet-bindings can automatically generate &lt;code&gt;UIHostingController&lt;/code&gt; wrappers for SwiftUI views, letting you embed SwiftUI components directly in your .NET MAUI app. No manual bridging code, no Objective-C intermediaries.&lt;/p&gt;

&lt;p&gt;This opens up Apple's modern UI framework from .NET — something that was previously impossible without writing significant Swift proxy code yourself. As Apple continues moving toward SwiftUI-first APIs, this capability becomes increasingly critical.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://github.com/justinwojo/swift-dotnet-bindings/wiki/SwiftUI-Interop" rel="noopener noreferrer"&gt;SwiftUI Interop guide&lt;/a&gt; for detailed setup instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Swift and Objective-C Features Are Supported?
&lt;/h2&gt;

&lt;p&gt;The generator handles the full breadth of Swift's type system, not just the basics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Classes&lt;/strong&gt; with automatic reference counting (ARC) and inheritance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structs&lt;/strong&gt; — both frozen and non-frozen, with full value semantics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enums&lt;/strong&gt; including associated values and raw types&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocols&lt;/strong&gt; with interface generation and witness table dispatch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generics&lt;/strong&gt; with proper C# generic constraints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Async methods&lt;/strong&gt; mapped to &lt;code&gt;Task&amp;lt;T&amp;gt;&lt;/code&gt; with full cancellation support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Closures&lt;/strong&gt; as &lt;code&gt;Action&amp;lt;T&amp;gt;&lt;/code&gt; / &lt;code&gt;Func&amp;lt;T&amp;gt;&lt;/code&gt; with proper memory management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional types&lt;/strong&gt; mapped naturally to C# nullable types&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SwiftUI Views&lt;/strong&gt; automatically bridged via &lt;code&gt;UIHostingController&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Properties&lt;/strong&gt;, &lt;strong&gt;subscripts&lt;/strong&gt;, &lt;strong&gt;operators&lt;/strong&gt;, and &lt;strong&gt;static members&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Objective-C frameworks&lt;/strong&gt; with &lt;code&gt;[Protocol]&lt;/code&gt;, &lt;code&gt;[Model]&lt;/code&gt;, &lt;code&gt;[Export]&lt;/code&gt;, argument semantics — everything Objective Sharpie does and more&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Type Mapping
&lt;/h3&gt;

&lt;p&gt;Swift and Objective-C types are mapped to their natural C# equivalents. No &lt;code&gt;SwiftString&lt;/code&gt; or &lt;code&gt;SwiftBool&lt;/code&gt; leaking into your API:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Swift Type&lt;/th&gt;
&lt;th&gt;C# Type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;String&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Bool&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Int&lt;/code&gt;, &lt;code&gt;Int32&lt;/code&gt;, &lt;code&gt;Int64&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;nint&lt;/code&gt;, &lt;code&gt;int&lt;/code&gt;, &lt;code&gt;long&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;Double&lt;/code&gt;, &lt;code&gt;Float&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;double&lt;/code&gt;, &lt;code&gt;float&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Array&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IReadOnlyList&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Optional&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;T?&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;NSData&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;URL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;NSUrl&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;CGRect&lt;/code&gt;, &lt;code&gt;CGPoint&lt;/code&gt;, &lt;code&gt;CGSize&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;CoreGraphics.CGRect&lt;/code&gt;, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The generator also bridges to existing .NET iOS types where they exist, so &lt;code&gt;CGRect&lt;/code&gt; from a Swift binding is the same &lt;code&gt;CoreGraphics.CGRect&lt;/code&gt; you already use — no type mismatch headaches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validated Against Real-World Libraries
&lt;/h2&gt;

&lt;p&gt;This isn't a proof of concept. The tool is validated against &lt;strong&gt;51 libraries across 95 framework targets&lt;/strong&gt;, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Image &amp;amp; Animation&lt;/strong&gt; — Nuke, Lottie, Kingfisher, SDWebImage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networking&lt;/strong&gt; — Alamofire, Starscream, Moya&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payments&lt;/strong&gt; — Stripe (14 mixed Swift + ObjC frameworks)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document Scanning&lt;/strong&gt; — BlinkID, BlinkIDUX&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI Components&lt;/strong&gt; — SnapKit, Hero, IQKeyboardManager, Charts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt; — Realm (Objective-C)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firebase&lt;/strong&gt; — 28 framework targets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Utilities&lt;/strong&gt; — CryptoSwift, SwiftyJSON, KeychainAccess, PromiseKit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This includes complex mixed Swift + Objective-C frameworks like Stripe (14 inter-dependent targets) and the full Firebase SDK (28 framework targets) — not just simple single-module libraries.&lt;/p&gt;

&lt;p&gt;For select libraries, full end-to-end runtime testing is performed on both iOS Simulator and physical devices to verify the bindings actually work at runtime, not just compile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-Built NuGet Packages
&lt;/h2&gt;

&lt;p&gt;Don't want to generate bindings yourself? Pre-built NuGet packages are available for popular libraries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.nuget.org/packages/SwiftBindings.Nuke" rel="noopener noreferrer"&gt;&lt;code&gt;SwiftBindings.Nuke&lt;/code&gt;&lt;/a&gt; — High-performance image loading&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.nuget.org/packages/SwiftBindings.Lottie" rel="noopener noreferrer"&gt;&lt;code&gt;SwiftBindings.Lottie&lt;/code&gt;&lt;/a&gt; — Lottie animation playback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More are coming soon, including BlinkID, Stripe, and others. The &lt;a href="https://github.com/justinwojo/swift-dotnet-packages" rel="noopener noreferrer"&gt;swift-dotnet-packages&lt;/a&gt; repository tracks all available packages and includes a sample .NET iOS app demonstrating real usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;.NET 10.0 SDK (preview or later)&lt;/li&gt;
&lt;li&gt;macOS with Xcode installed&lt;/li&gt;
&lt;li&gt;An xcframework to bind (or use &lt;a href="https://github.com/justinwojo/spm-to-xcframework" rel="noopener noreferrer"&gt;spm-to-xcframework&lt;/a&gt; to build one from any Swift Package Manager dependency)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Install the Template
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet new &lt;span class="nb"&gt;install &lt;/span&gt;SwiftBindings.Templates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Create a Binding Project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet new swift-binding &lt;span class="nt"&gt;-n&lt;/span&gt; Nuke.Swift.iOS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Add Your Framework
&lt;/h3&gt;

&lt;p&gt;Copy your &lt;code&gt;.xcframework&lt;/code&gt; into the project directory (or configure the path in the &lt;code&gt;.csproj&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Build and Pack
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet build
dotnet pack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output is a standard NuGet package you can reference from any .NET MAUI or .NET iOS project — complete with generated XML documentation, proper framework references, and NuGet metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ready to try it?&lt;/strong&gt; &lt;a href="https://github.com/justinwojo/swift-dotnet-bindings/wiki/Getting-Started" rel="noopener noreferrer"&gt;Install the template&lt;/a&gt; and bind your first library in minutes, or &lt;a href="https://github.com/justinwojo/swift-dotnet-bindings" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt; to follow along.&lt;/p&gt;

&lt;h3&gt;
  
  
  Working with Swift Package Manager Dependencies
&lt;/h3&gt;

&lt;p&gt;Many Swift libraries are distributed via SPM rather than as pre-built xcframeworks. Use the companion tool &lt;a href="https://github.com/justinwojo/spm-to-xcframework" rel="noopener noreferrer"&gt;spm-to-xcframework&lt;/a&gt; to convert any SPM package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone and run&lt;/span&gt;
./spm-to-xcframework https://github.com/kean/Nuke.git &lt;span class="nt"&gt;--version&lt;/span&gt; 12.8.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This produces the xcframework files ready to feed into the binding generator.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Under the hood, the generator:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Parses&lt;/strong&gt; the Swift ABI JSON metadata from the compiled xcframework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resolves&lt;/strong&gt; types, protocols, generics, and cross-module dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generates&lt;/strong&gt; C# P/Invoke bindings using &lt;code&gt;@_cdecl&lt;/code&gt; Swift wrapper functions for ABI stability&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emits&lt;/strong&gt; a complete &lt;code&gt;.csproj&lt;/code&gt; with proper framework references, NuGet metadata, and build configuration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Produces&lt;/strong&gt; a companion Swift wrapper that the MSBuild SDK compiles automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For Objective-C frameworks, it reads the module headers and generates traditional &lt;code&gt;[DllImport]&lt;/code&gt;-based bindings with full &lt;code&gt;[Protocol]&lt;/code&gt;, &lt;code&gt;[Model]&lt;/code&gt;, and &lt;code&gt;[Export]&lt;/code&gt; attribute support.&lt;/p&gt;

&lt;p&gt;The full architecture is documented in the &lt;a href="https://github.com/justinwojo/swift-dotnet-bindings/wiki/Architecture" rel="noopener noreferrer"&gt;Architecture guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source and Community
&lt;/h2&gt;

&lt;p&gt;swift-dotnet-bindings is &lt;a href="https://github.com/justinwojo/swift-dotnet-bindings" rel="noopener noreferrer"&gt;MIT licensed&lt;/a&gt; and actively maintained. Originally forked from Microsoft's experimental &lt;code&gt;dotnet/runtimelab&lt;/code&gt; swift-bindings branch, it has grown from a proof-of-concept into a production-grade tool with 800+ commits, 9,000+ unit tests, and 1,200+ runtime tests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/justinwojo/swift-dotnet-bindings" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/justinwojo/swift-dotnet-bindings/wiki" rel="noopener noreferrer"&gt;Documentation Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/justinwojo/swift-dotnet-bindings/wiki/Getting-Started" rel="noopener noreferrer"&gt;Getting Started Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/justinwojo/swift-dotnet-bindings/wiki/FAQ" rel="noopener noreferrer"&gt;FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/justinwojo/swift-dotnet-packages" rel="noopener noreferrer"&gt;Pre-built Packages&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're tired of fighting with Objective Sharpie, writing Swift proxy libraries, or being locked out of Swift-only Apple frameworks, give it a try. Star the repo, &lt;a href="https://github.com/justinwojo/swift-dotnet-bindings/wiki/Getting-Started" rel="noopener noreferrer"&gt;install the template&lt;/a&gt;, and bind your first library in minutes.&lt;/p&gt;

&lt;p&gt;For the story behind how this tool was built, check out my earlier post: &lt;a href="https://dev.to/blog/swift-dotnet-bindings"&gt;Building a Swift + ObjC .NET Binding Tool Entirely with AI in 6 Weeks&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>dotnet</category>
      <category>maui</category>
    </item>
  </channel>
</rss>
