Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här guiden visar hur du skapar ett C#-inbyggt tillägg som anropar Phi Silica AI API i din Electron-app. Phi Silica är en liten språkmodell som körs lokalt på Windows 11 enheter med NPU:er (neurala bearbetningsenheter).
Förutsättningar
Kontrollera att du har gjort så här innan du startar den här guiden:
- Installationen av utvecklingsmiljön har slutförts
- Copilot+ PC – Phi Silica kräver en enhet med en NPU (neural bearbetningsenhet)
Anmärkning
Om du inte har en Copilot+ PC kan du fortfarande följa den här guiden för att lära dig hur du skapar tillägg. Koden hanterar enheter utan NPU-stöd genom att returnera ett meddelande som anger att modellen inte är tillgänglig.
Steg 1: Skapa ett internt C#-tillägg
Nu till den spännande delen – nu ska vi skapa ett internt tillägg som anropar Windows API:er! Vi använder en C#-mall som använder node-api-dotnet för att överbrygga JavaScript och C#.
npx winapp node create-addon --template cs
Då skapas en csAddon/ mapp med:
-
addon.cs– Din C#-kod som anropar Windows-API:er -
csAddon.csproj– Project fil med referenser till Windows SDK och Windows App SDK -
README.md– Dokumentation om hur du använder tillägget
Kommandot lägger också till ett build-csAddon skript i din package.json för byggande av tillägget och ett clean-csAddon skript för rensning av byggartefakter.
{
"scripts": {
"build-csAddon": "dotnet publish ./csAddon/csAddon.csproj -c Release",
"clean-csAddon": "dotnet clean ./csAddon/csAddon.csproj"
}
}
Mallen innehåller automatiskt referenser till båda SDK:erna, så att du omedelbart kan börja anropa Windows API:er!
Nu ska vi kontrollera att allt har konfigurerats korrekt genom att skapa tillägget:
# Build the C# addon
npm run build-csAddon
Anmärkning
Du kan också skapa ett C++-tillägg med ( npx winapp node create-addon utan --template flaggan). C++-tillägg använder node-addon-api och ger direkt åtkomst till Windows API:er med maximal prestanda. Se guiden C++-meddelandetillägg för en genomgång eller den fullständiga kommandodokumentationen för fler alternativ.
Steg 2: Lägga till AI-funktioner med Phi Silica
Nu ska vi lägga till ett verkligt Windows App SDK API – vi använder ai-modellen Phi Silica för att sammanfatta text direkt på enheten.
Öppna csAddon/addon.cs och lägg till den här koden:
using System;
using System.Threading.Tasks;
using Microsoft.JavaScript.NodeApi;
using Microsoft.Windows.AI;
using Microsoft.Windows.AI.Text;
namespace csAddon
{
[JSExport]
public class Addon
{
/// <summary>
/// Summarizes the provided text using the Phi Silica AI model.
/// </summary>
/// <param name="text">The text to summarize</param>
/// <returns>A summary of the input text</returns>
[JSExport]
public static async Task<string> SummarizeText(string text)
{
try
{
var readyState = LanguageModel.GetReadyState();
if (readyState is AIFeatureReadyState.Ready or AIFeatureReadyState.NotReady)
{
if (readyState == AIFeatureReadyState.NotReady)
{
await LanguageModel.EnsureReadyAsync();
}
using LanguageModel languageModel = await LanguageModel.CreateAsync();
TextSummarizer textSummarizer = new TextSummarizer(languageModel);
var result = await textSummarizer.SummarizeParagraphAsync(text);
return result.Text;
}
return "Model is not available";
}
catch (Exception ex)
{
return $"Error calling Phi Silica API: {ex.Message}";
}
}
}
}
Anmärkning
Phi Silica kräver Windows 11 med en NPU-utrustad enhet (Copilot+ PC). Om du inte har kompatibel maskinvara returnerar API:et ett meddelande som anger att modellen inte är tillgänglig. Du kan fortfarande slutföra den här självstudien och paketera appen – den hanterar enheter utan NPU-stöd på ett smidigt sätt.
Steg 3: Skapa C#-tillägget
Skapa nu tillägget igen:
npm run build-csAddon
Detta kompilerar din C#-kod med Native AOT (förkompilering), som:
- Skapar en
.nodebinär fil (internt tilläggsformat) - Minskar oanvänd kod för mindre paket.
- Kräver no .NET runtime på måldatorer
- Ger inbyggda prestanda
Det kompilerade tillägget finns i csAddon/dist/csAddon.node.
Steg 4: Testa Windows-API:et
Nu ska vi kontrollera att tillägget fungerar genom att anropa det från huvudprocessen. Öppna src/main.js och följ dessa steg:
4.1. Läs in C#-tillägget
Lägg till detta med dina andra require instruktioner överst i filen:
const csAddon = require('../csAddon/dist/csAddon.node');
4.2. Skapa en testfunktion
Lägg till den här funktionen någonstans i filen (efter kräv-instruktionerna):
const callPhiSilica = async () => {
console.log('Summarizing with Phi Silica: ')
const result = await csAddon.Addon.summarizeText("The Windows App Development CLI is a powerful tool that bridges cross-platform development with Windows-native capabilities.");
console.log('Summary:', result);
};
4.3. Anropa funktionen
Lägg till den här raden i slutet av createWindow() funktionen för att testa API:et när appen startar:
callPhiSilica();
När du kör appen skrivs sammanfattningen ut till konsolen. Härifrån kan du integrera tillägget i din app på det sätt du önskar - genom att exponera det via ett förinläsningsskript till återgivningsprocessen, anropa det via IPC-hanterare, eller använda det direkt i huvudprocessen.
Steg 5: Lägg till nödvändig kapacitet
Innan du kan använda Phi Silica-API:et måste du deklarera den kapacitet som krävs i appmanifestet. Öppna Package.appxmanifest och lägg till systemAIModels funktionen i avsnittet <Capabilities> :
<Capabilities>
<rescap:Capability Name="runFullTrust" />
<rescap:Capability Name="systemAIModels" />
</Capabilities>
Tips/Råd
Olika Windows API:er kräver olika funktioner. Kontrollera alltid API-dokumentationen för att se vilka funktioner som behövs. Vanliga är microphone, webcam, locationoch bluetooth.
Steg 6: Uppdatera felsökningsidentitet
När du ändrar Package.appxmanifest eller ändrar tillgångar som refereras till i manifestet (till exempel appikoner) måste du uppdatera appens felsökningsidentitet. Run:
npx winapp node add-electron-debug-identity
Det här kommandot:
- Läser din
Package.appxmanifestför att hämta appinformation och funktioner -
electron.exeRegistrerar sig i dinnode_modulesmed en tillfällig identitet - Gör att du kan testa api:er som krävs för identitet utan fullständig MSIX-paketering
Anmärkning
Det här kommandot är redan en del av skriptet postinstall som vi lade till i installationsguiden, så det körs automatiskt efter npm install. Du måste dock köra den manuellt när du:
- Ändra
Package.appxmanifest(ändra funktioner, identitet eller egenskaper) - Uppdatera apptillgångar (ikoner, logotyper osv.)
- Installera om eller uppdatera beroenden
Kör nu appen:
npm start
Kontrollera konsolens utdata – du bör se Phi Silica-sammanfattningen utskriven!
⚠️ Känt problem: App kraschar eller tomt fönster (klicka för att expandera)
Det finns en känd Windows bugg med gles paketering av Elektronprogram som gör att appen kraschar vid start eller inte renderar webbinnehåll. Problemet har åtgärdats i Windows men har ännu inte spridits till alla enheter.
Se konfigurationen av utvecklingsmiljön för en lösning.
Nästa steg
Grattis! Du har skapat ett internt tillägg som anropar Windows AI-API:er! 🎉
Nu är du redo att:
- Paketera din app för distribution – Skapa ett MSIX-paket som du kan distribuera
Eller utforska andra guider:
- Skapa ett WinML-tillägg – Lär dig hur du använder Windows strojové učenie
- Översikt över komma igång – Gå tillbaka till huvudguiden
Ytterligare resurser
- winapp CLI-dokumentation – Fullständig CLI-referens
- Exempel på Electron-app – Komplett arbetsexempel
- Windows AI Addon for Electron – WINDOWS AI Addon for Electron är ett Node.js internt tillägg som ger åtkomst till Windows AI-API:er direkt från JavaScript.
- AI Dev Gallery – exempelgalleri för alla AI-API:er
- Windows App SDK Samples – Samling Windows App SDK exempel
- node-api-dotnet – C# ↔ JavaScript-interop-bibliotek
Windows developer