Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erstellen Sie ein kleines WinUI 3-Projekt, und kopieren Sie dann den Code aus diesen Themen in das Projekt. Sie müssen kein Repository klonen oder ein vollständiges Beispiel herunterladen. Wenn Sie bereits über eine WinUI 3-App verfügen, passen Sie die folgende Konfiguration an, und behalten Sie die vorhandene Identität, Ressourcen und Navigation Ihrer App bei.
Erstellen Ihres Projekts
Folgen Sie dem Befehlszeilen-WinUI-Setup, um die .NET 10 SDK- und WinUI-Vorlagen zu installieren. Erstellen Sie in einem Verzeichnis, in dem Sie Projekte aufbewahren, ein Projekt mit dem Namen "LocalNotes":
dotnet new winui-mvvm -n LocalNotes --dotnet-version net10.0 --target-platform-min-version 10.0.26100.0
Set-Location LocalNotes
Die WinUI MVVM-App-Vorlage stellt das App-Manifest, die Ressourcen, die Seite, das Ansichtsmodell und die architekturspezifischen Veröffentlichungsprofile bereit. Der Projektname ist wichtig, da der Code in diesem Lernprogramm den LocalNotes Namespace verwendet.
Sie können das generierte LocalNotes.csproj Element in Visual Studio 2026 öffnen oder in Ihrem Editor fortfahren. Wählen Sie ARM64 auf einem Arm64-PC oder x64 auf einem Intel- oder AMD-PC aus. Wählen Sie keine CPU aus: Die Ableitungslaufzeit enthält architekturspezifische systemeigene Bibliotheken.
Konfigurieren des Projekts
Ersetzen Sie für das neue LocalNotes-Projekt den Inhalt von LocalNotes.csproj durch den folgenden Code. Behalten Sie die von der Vorlage generierten Ordner Assets und Properties\PublishProfiles, app.manifest und Package.appxmanifest.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
<TargetPlatformMinVersion>10.0.26100.0</TargetPlatformMinVersion>
<RootNamespace>LocalNotes</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Platforms>ARM64;x64</Platforms>
<Platform Condition="'$(Platform)' == '' or '$(Platform)' == 'AnyCPU'">ARM64</Platform>
<RuntimeIdentifiers>win-arm64;win-x64</RuntimeIdentifiers>
<PublishProfile>win-$(Platform).pubxml</PublishProfile>
<UseWinUI>true</UseWinUI>
<WinUISDKReferences>false</WinUISDKReferences>
<EnableMsixTooling>true</EnableMsixTooling>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Content Include="Assets\SplashScreen.scale-200.png" />
<Content Include="Assets\LockScreenLogo.scale-200.png" />
<Content Include="Assets\Square150x150Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="Assets\Square44x44Logo.targetsize-48_altform-lightunplated.png" />
<Content Include="Assets\StoreLogo.png" />
<Content Include="Assets\AppIcon.ico" />
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
</ItemGroup>
<ItemGroup>
<Manifest Include="$(ApplicationManifest)" />
</ItemGroup>
<!--
Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
Tools extension to be activated for this project even if the Windows App SDK Nuget
package has not yet been restored.
-->
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
<ProjectCapability Include="Msix" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AI.Foundry.Local.WinML" Version="1.2.4" />
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.28000.2705" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="2.4.0" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.2" />
</ItemGroup>
<!--
Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
Explorer "Package and Publish" context menu entry to be enabled for this project even if
the Windows App SDK Nuget package has not yet been restored.
-->
<PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
<HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
</PropertyGroup>
<!-- Publish Properties -->
<PropertyGroup>
<PublishReadyToRun Condition="'$(Configuration)' == 'Debug'">False</PublishReadyToRun>
<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
<PublishTrimmed Condition="'$(Configuration)' == 'Debug'">False</PublishTrimmed>
<PublishTrimmed Condition="'$(Configuration)' != 'Debug'">False</PublishTrimmed>
</PropertyGroup>
<!-- Foundry Core 1.2.4 bundles an older copy of this DLL as well as depending
on the WinML package. Keep the dependency's DLL once in the MSIX payload. -->
<Target Name="RemoveDuplicateFoundryWinML" AfterTargets="ResolvePackageAssets">
<ItemGroup>
<NativeCopyLocalItems Remove="@(NativeCopyLocalItems)"
Condition="'%(NativeCopyLocalItems.NuGetPackageId)' == 'Microsoft.AI.Foundry.Local.Core.WinML' and '%(NativeCopyLocalItems.Filename)%(NativeCopyLocalItems.Extension)' == 'Microsoft.Windows.AI.MachineLearning.dll'" />
</ItemGroup>
</Target>
</Project>
Die validierten Versionen sind Microsoft.AI.Foundry.Local.WinML 1.2.4, Microsoft.WindowsAppSDK 2.4.0 und CommunityToolkit.Mvvm 8.4.2. Verwenden Sie die hier gezeigten Versionen, anstatt Pakete zu aktualisieren, während Sie die exemplarische Vorgehensweise ausführen.
Note
Bei diesen Paketversionen liefern sowohl das Foundry Core-Paket als auch seine Windows ML-Abhängigkeit Microsoft.Windows.AI.MachineLearning.dll. Das RemoveDuplicateFoundryWinML Ziel entfernt nur die redundante Foundry-Kopie aus den Paketressourcen und behält die Kopie der Abhängigkeit bei. Ohne dies kann ein paketierter Build mit APPX1101 fehlschlagen. Überprüfen Sie dieses versionsspezifische Ziel beim Aktualisieren von Abhängigkeiten erneut.
Behalten Sie Package.appxmanifest und die mitgelieferte Launch-Konfiguration bei. Der Befehl "Projekterstellung" legt die mindeste Windows Version auf Build 26100 fest. Sie benötigen nicht die systemAIModels-Fähigkeit oder ein Phi Silica-Zugriffstoken für diese Foundry Local-Funktion.
Erstellen und Öffnen der App
Wählen Sie in Visual Studio das Startprofil für LocalNotes (Paket) aus, und drücken Sie F5. Wenn Sie ein Terminal mit dem installierten .NET 10 SDK und winapp verwenden, erstellen und starten Sie es für Ihre Architektur:
dotnet build LocalNotes.csproj -c Debug -p:Platform=ARM64
winapp run .\bin\ARM64\Debug\net10.0-windows10.0.26100.0\win-arm64 --detach --json
Ersetzen Sie auf einem x64-PC ARM64 durch x64 und win-arm64 durch .win-x64
winapp run startet die App mit Paketidentität; starten Sie die integrierte ausführbare Datei nicht direkt. Dies sind lokale Entwicklungsbefehle, keine Anweisungen zum Erstellen eines signierten verteilten MSIX.
An diesem Prüfpunkt zeigt die App weiterhin die Startseite der Vorlage an. Vergewissern Sie sich, dass sie geöffnet wird, und schließen Sie sie, bevor Sie die Dateien im nächsten Thema bearbeiten. Sie haben die Notiz-Editor- oder Modelleinrichtungssteuerelemente noch nicht hinzugefügt, und es sollte kein Modelldownload ausgeführt werden.
Note
NuGet-Wiederherstellung lädt Anwendungsabhängigkeiten während des Builds herunter. Die separate Modelleinrichtungsaktion in der ausgeführten App lädt Modelldateien herunter. Dies sind unterschiedliche Downloads mit unterschiedlichen Zwecken.
Hinzufügen der Abhängigkeit zu einer vorhandenen App
Wenn Sie eine vorhandene App anpassen, anstatt LocalNotes zu erstellen, erstellen Sie zuerst Ihre App, und führen Sie sie ohne KI aus. Fügen Sie dann aus dem Verzeichnis, das das C#-Projekt enthält, das Windows-spezifische SDK hinzu:
dotnet add package Microsoft.AI.Foundry.Local.WinML
Das Lernprogramm verwendet das MVVM-Toolkit für feststellbare Eigenschaften und asynchrone Befehle. Fügen Sie es hinzu, wenn Ihr Projekt noch nicht darauf verweist:
dotnet add package CommunityToolkit.Mvvm
Vergleichen Sie die oben aufgeführte Projektkonfiguration mit dem Ziel-Framework Ihrer App, der unterstützten Windows-Version und den Paketverweisen. Führen Sie die relevanten Einstellungen zusammen, anstatt die Identität, Objekte, Signatureinstellungen oder Navigation Ihres vorhandenen Projekts zu ersetzen.
Die Versionslosen Befehle wählen die aktuellen stabilen Pakete aus. Um diese exemplarische Anleitung exakt nachzuvollziehen, verwenden Sie stattdessen die Paketversionen aus dem obigen XML. Wenn Sie Foundry Local WinML 1.2.4 in einer verpackten App verwenden, behalten Sie auch das oben gezeigte Duplicate-Asset-Ziel mit eng begrenztem Geltungsbereich bei.
Dieses Tutorial verwendet das native In-Process-SDK. Sie installieren die Lokale Cli von Foundry nicht, starten den Dienst, wählen einen Localhost-Port aus oder konfigurieren einen OpenAI-Cloudendpunkt. Die Betalgo.Ranul.OpenAI nachrichtentypen, die im Dienst verwendet werden, kommen als transitive SDK-Abhängigkeit ein; ihr Namespace bedeutet nicht, dass das Beispiel einen Clouddienst aufruft. Weitere Integrationsoptionen finden Sie in der Foundry Local SDK-Referenz.
Identifizieren Sie die Grenze des Features
Die Notiz ist die Eingabe; die Zusammenfassung ist eine separate Ausgabe. Das Modellsetup erfolgt nach einer Benutzeraktion, und die Generierung wird erst ausgeführt, nachdem das Setup erfolgreich war. Ihre App funktioniert weiterhin als Text-Editor, wenn das Modell nicht bereit ist.
Im nächsten Schritt erstellen Sie den Dienst und ersetzen das Startansichtsmodell und die Seite. Jeder Codeblock enthält den vollständigen Inhalt der benannten Datei, einschließlich Namespaces und Verwendung von Direktiven. Kopieren Sie alle Dateien, bevor Sie erneut erstellen, damit die Seite, Befehle und Fensterlebensdauer verbunden sind.