Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Creare un piccolo progetto WinUI 3, quindi copiare il codice da questi argomenti. Non è necessario clonare un repository o scaricare un esempio completo. Se hai già un'app WinUI 3, adatta la configurazione seguente e mantieni l'identità, gli asset e la navigazione esistenti dell'app.
Creare il progetto
Segui la procedura di configurazione di WinUI dalla riga di comando per installare lo SDK di .NET 10 e i modelli di WinUI. Da una directory in cui si mantengono i progetti, creare un progetto denominato LocalNotes:
dotnet new winui-mvvm -n LocalNotes --dotnet-version net10.0 --target-platform-min-version 10.0.26100.0
Set-Location LocalNotes
Il modello App MVVM WinUI fornisce il manifesto dell'app, gli asset, la pagina, il modello di visualizzazione e i profili di pubblicazione specifici dell'architettura. Il nome del progetto è importante perché il codice in questo tutorial usa lo spazio dei nomi LocalNotes.
È possibile aprire il generato LocalNotes.csproj in Visual Studio 2026 o continuare nell'editor. Selezionare ARM64 in un PC Arm64 o x64 in un PC Intel o AMD. Non selezionare Qualsiasi CPU: il runtime di inferenza include librerie native specifiche dell'architettura.
Configurare il progetto
Per il nuovo progetto LocalNotes sostituire il contenuto di LocalNotes.csproj con il codice seguente. Conservare le cartelle generate dal modello Properties\PublishProfiles e Assets, app.manifest e 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>
Le versioni convalidate vengono Microsoft. Intelligenza artificiale. Foundry.Local.WinML 1.2.4, Microsoft. WindowsAppSDK 2.4.0 e CommunityToolkit.Mvvm 8.4.2. Usare le versioni illustrate di seguito anziché aggiornare i pacchetti durante la procedura dettagliata.
Note
Con queste versioni del pacchetto, sia il pacchetto Foundry Core sia la relativa dipendenza da Windows ML forniscono Microsoft.Windows.AI.MachineLearning.dll. Il RemoveDuplicateFoundryWinML target rimuove solo la copia ridondante di Foundry nelle risorse del pacchetto, conservando quella della dipendenza. Senza di esso, una compilazione in pacchetto può non riuscire con APPX1101. Riesamina questo target specifico della versione quando aggiorni le dipendenze.
Mantieni Package.appxmanifest e la configurazione di avvio inclusa nel pacchetto. Il comando di creazione del progetto imposta la versione minima Windows per la build 26100. Non è necessaria la systemAIModels funzionalità o un token di accesso Phi Silica per questa funzionalità locale di Foundry.
Compilare e aprire l'app
In Visual Studio selezionare il profilo di avvio LocalNotes (Pacchetto) e premere F5. Se utilizzi un terminale con l'SDK .NET 10 e winapp installato, compila e avvia per la tua architettura:
dotnet build LocalNotes.csproj -c Debug -p:Platform=ARM64
winapp run .\bin\ARM64\Debug\net10.0-windows10.0.26100.0\win-arm64 --detach --json
In un PC x64 sostituire ARM64 con x64 e win-arm64 con win-x64.
winapp run avvia l'app con l'identità del pacchetto; non avviare direttamente il file eseguibile compilato. Si tratta di comandi di sviluppo locali, non istruzioni per la produzione di un MSIX distribuibile firmato.
In questo checkpoint, l'app visualizza ancora la pagina iniziale del modello. Verificare che venga aperto, quindi chiuderlo prima di modificare i file nell'argomento successivo. Non è ancora stato aggiunto l'editor delle note o i controlli di configurazione del modello e non deve essere eseguito alcun download del modello.
Note
Il ripristino di NuGet scarica le dipendenze dell'applicazione durante la compilazione. L'azione di configurazione del modello separata nell'app in esecuzione scarica i file del modello. Questi sono download diversi con scopi diversi.
Aggiungere la dipendenza a un'app esistente
Se stai adattando un'app esistente invece di creare LocalNotes, compila ed esegui la tua app senza intelligenza artificiale. Quindi, dalla directory contenente il progetto C#, aggiungere l'SDK specifico di Windows:
dotnet add package Microsoft.AI.Foundry.Local.WinML
Il tutorial usa MVVM Toolkit per le proprietà osservabili e i comandi asincroni. Aggiungerlo se il progetto non vi fa già riferimento:
dotnet add package CommunityToolkit.Mvvm
Confrontare la configurazione del progetto precedente con il framework di destinazione dell'app, la versione supportata Windows e i riferimenti ai pacchetti. Unire le impostazioni pertinenti anziché sostituire l'identità, gli asset, le impostazioni di firma o la navigazione del progetto esistente.
I comandi senza versione selezionano i pacchetti stabili correnti. Per riprodurre esattamente questa procedura dettagliata, usare invece le versioni del pacchetto nel codice XML precedente. Quando si utilizza Foundry Local WinML 1.2.4 in un'app pacchettizzata, mantenere anche il target duplicato per gli asset con ambito ristretto mostrato sopra.
Questa esercitazione usa l'SDK in-process nativo. Non devi installare Foundry Local CLI, avviarne il servizio, scegliere una porta localhost né configurare un endpoint cloud di OpenAI. I tipi di messaggio Betalgo.Ranul.OpenAI utilizzati nel servizio vengono forniti come dipendenza transitiva dell'SDK; il loro spazio dei nomi non significa che l'esempio effettui chiamate a un servizio cloud. Per altre opzioni di integrazione, vedere le informazioni di riferimento su Foundry Local SDK.
Identificare il limite di funzionalità
La nota è l'input; il riepilogo è un output separato. La configurazione del modello viene eseguita dopo un'azione dell'utente e la generazione viene eseguita solo dopo l'esito positivo dell'installazione. L'app funziona ancora come editor di testo se il modello non è pronto.
Nel passaggio successivo si crea il servizio e si sostituisce il modello di visualizzazione iniziale e la pagina. Ogni blocco di codice include il contenuto completo del file corrispondente, inclusi i namespace e le direttive using. Copiare tutti i file prima di compilare di nuovo in modo che la pagina, i comandi e la durata della finestra siano connessi.