unoplatform/uno · error · InvalidOperationException

The type {0} could not be found

Error message

The type {0} could not be found

What it means

Thrown by GetType(string name, XamlObjectDefinition) when ResolveType returns null for a type name referenced in XAML. The error is formatted with the unresolved name. This covers the string-name overload of the type lookup.

Source

Thrown at src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/XamlFileGenerator.Reflection.cs:675

						{
							if (_metadataHelper.FindTypeByFullName($"{GetTrimmedNamespace(@namespace.Namespace)}.{name.Substring(indexOfColon + 1)}") is INamedTypeSymbol namedType)
							{
								return namedType;
							}

							break;
						}
					}
				}

				xmlnsContextProvider = xmlnsContextProvider.Owner;
			}

			return _findType!(name);
		}
		private INamedTypeSymbol GetType(string name, XamlObjectDefinition? objectDefinition = null) =>
			ResolveType(name, objectDefinition) ??
			throw new InvalidOperationException("The type {0} could not be found".InvariantCultureFormat(name));

		private INamedTypeSymbol GetType(XamlType type)
		{
			var clrType = FindType(type);

			if (clrType == null)
			{
				throw new InvalidOperationException("The type {0} could not be found".InvariantCultureFormat(type));
			}

			return clrType;
		}

		private INamedTypeSymbol? SourceFindType(string name)
		{
			if (name.StartsWith(GlobalPrefix, StringComparison.Ordinal))
			{
				return _metadataHelper.FindTypeByFullName(name.Substring(GlobalPrefix.Length)) as INamedTypeSymbol;

View on GitHub (pinned to 0418340488)

Solutions

  1. Add the correct xmlns declaration mapping the prefix to the CLR namespace and assembly.
  2. Ensure the project references the assembly containing the type.
  3. Check for typos in the type name.
  4. Run dotnet restore if the package may not be fully restored.

Example fix

<!-- before (missing xmlns) -->
<Page>
  <my:CustomControl />
</Page>
<!-- after -->
<Page xmlns:my="using:MyApp.Controls">
  <my:CustomControl />
</Page>
Defensive patterns

Strategy: validation

Validate before calling

<!-- Ensure xmlns declarations cover all referenced types -->
<!-- Check: -->
<!--   1. Every prefix used in XAML has a matching xmlns declaration -->
<!--   2. The 'using:' or 'clr-namespace:' points to the correct namespace -->
<!--   3. The assembly is referenced by the project -->

Prevention

When it happens

Trigger: A XAML element or attribute references a type by name that cannot be resolved to any INamedTypeSymbol in the compilation — e.g. a missing xmlns prefix, an unregistered custom control, or a type from an unreferenced assembly.

Common situations: Custom control namespace not declared in xmlns; the assembly containing the type is not referenced by the project; type name typo; using a type from a NuGet package that was not restored or is the wrong version.

Related errors


AI-assisted analysis of unoplatform/uno@0418340488 (2026-08-13). Data as JSON: /api/errors/5c8ecdd5541ec25a. Report an issue: GitHub.