diff --git a/src/XamlNameReferenceGenerator.Tests/MiniCompilerTests.cs b/src/XamlNameReferenceGenerator.Tests/MiniCompilerTests.cs
new file mode 100644
index 0000000000..5ec3ee5c46
--- /dev/null
+++ b/src/XamlNameReferenceGenerator.Tests/MiniCompilerTests.cs
@@ -0,0 +1,51 @@
+using System;
+using System.ComponentModel;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using XamlNameReferenceGenerator.Infrastructure;
+using XamlX;
+using XamlX.Parsers;
+using Xunit;
+
+namespace XamlNameReferenceGenerator.Tests
+{
+ public class MiniCompilerTests
+ {
+ private const string MiniClass = "namespace Example { public class Valid { public int Foo() => 21; } }";
+ private const string MiniInvalidXaml = "";
+ private const string MiniValidXaml = "";
+
+ [Fact]
+ public void Should_Resolve_Types_From_Valid_Xaml_Markup()
+ {
+ var xaml = XDocumentXamlParser.Parse(MiniValidXaml);
+ var compilation = CreateBasicCompilation(MiniClass, "Example");
+
+ MiniCompiler
+ .CreateDefault(new RoslynTypeSystem(compilation))
+ .Transform(xaml);
+
+ Assert.NotNull(xaml.Root);
+ }
+
+ [Fact]
+ public void Should_Throw_When_Unable_To_Resolve_Types()
+ {
+ var xaml = XDocumentXamlParser.Parse(MiniInvalidXaml);
+ var compilation = CreateBasicCompilation(MiniClass, "Example");
+ var compiler = MiniCompiler.CreateDefault(new RoslynTypeSystem(compilation));
+
+ Assert.Throws(() => compiler.Transform(xaml));
+ }
+
+ private static CSharpCompilation CreateBasicCompilation(string source, string name) =>
+ CSharpCompilation
+ .Create(name, options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary))
+ .AddReferences(MetadataReference.CreateFromFile(typeof(string).Assembly.Location))
+ .AddReferences(MetadataReference.CreateFromFile(typeof(IServiceProvider).Assembly.Location))
+ .AddReferences(MetadataReference.CreateFromFile(typeof(ITypeDescriptorContext).Assembly.Location))
+ .AddReferences(MetadataReference.CreateFromFile(typeof(ISupportInitialize).Assembly.Location))
+ .AddReferences(MetadataReference.CreateFromFile(typeof(TypeConverterAttribute).Assembly.Location))
+ .AddSyntaxTrees(CSharpSyntaxTree.ParseText(source));
+ }
+}
\ No newline at end of file
diff --git a/src/XamlNameReferenceGenerator.Tests/XamlNameReferenceGenerator.Tests.csproj b/src/XamlNameReferenceGenerator.Tests/XamlNameReferenceGenerator.Tests.csproj
new file mode 100644
index 0000000000..36f228e53d
--- /dev/null
+++ b/src/XamlNameReferenceGenerator.Tests/XamlNameReferenceGenerator.Tests.csproj
@@ -0,0 +1,23 @@
+
+
+ Exe
+ net5
+ preview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/XamlNameReferenceGenerator.Tests/XamlXNameReferenceXamlParserTests.cs b/src/XamlNameReferenceGenerator.Tests/XamlXNameReferenceXamlParserTests.cs
new file mode 100644
index 0000000000..51b8700825
--- /dev/null
+++ b/src/XamlNameReferenceGenerator.Tests/XamlXNameReferenceXamlParserTests.cs
@@ -0,0 +1,13 @@
+using Xunit;
+
+namespace XamlNameReferenceGenerator.Tests
+{
+ public class XamlXNameReferenceXamlParserTests
+ {
+ [Fact]
+ public void Should_Resolve_Named_Controls_From_Xaml_Markup()
+ {
+ // TODO: Fix all stuff.
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/XamlNameReferenceGenerator.sln b/src/XamlNameReferenceGenerator.sln
index 5d55b96e20..4e636ae3b2 100644
--- a/src/XamlNameReferenceGenerator.sln
+++ b/src/XamlNameReferenceGenerator.sln
@@ -4,6 +4,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlNameReferenceGenerator"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlNameReferenceGenerator.Sandbox", "XamlNameReferenceGenerator.Sandbox\XamlNameReferenceGenerator.Sandbox.csproj", "{C90BB1C6-5C33-494A-96FA-FEE7B34CA83C}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlNameReferenceGenerator.Tests", "XamlNameReferenceGenerator.Tests\XamlNameReferenceGenerator.Tests.csproj", "{B13A0A44-85BC-49A7-970F-6C9BF8BDFD54}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -18,5 +20,9 @@ Global
{C90BB1C6-5C33-494A-96FA-FEE7B34CA83C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C90BB1C6-5C33-494A-96FA-FEE7B34CA83C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C90BB1C6-5C33-494A-96FA-FEE7B34CA83C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B13A0A44-85BC-49A7-970F-6C9BF8BDFD54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B13A0A44-85BC-49A7-970F-6C9BF8BDFD54}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B13A0A44-85BC-49A7-970F-6C9BF8BDFD54}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B13A0A44-85BC-49A7-970F-6C9BF8BDFD54}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
diff --git a/src/XamlNameReferenceGenerator/Infrastructure/MiniCompiler.cs b/src/XamlNameReferenceGenerator/Infrastructure/MiniCompiler.cs
index f8309bc343..8eb57f5126 100644
--- a/src/XamlNameReferenceGenerator/Infrastructure/MiniCompiler.cs
+++ b/src/XamlNameReferenceGenerator/Infrastructure/MiniCompiler.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using XamlX.Compiler;
using XamlX.Emit;
using XamlX.Transform;
@@ -9,13 +10,16 @@ namespace XamlNameReferenceGenerator.Infrastructure
{
internal sealed class MiniCompiler : XamlCompiler