Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Bu kılavuz çoğu .NET project türü için çalışır. Adımlar hem konsol hem de WPF gibi kullanıcı arabirimi tabanlı projelerle test edilmiştir.
Bu kılavuzda, paket kimliğiyle hata ayıklamak ve uygulamanızı MSIX olarak paketlemek için winapp CLI'nin bir .NET uygulamasıyla nasıl kullanılacağı gösterilmektedir.
Paket kimliği, Windows app modelinde temel bir kavramdır. Uygulamanızın belirli Windows API'lerine (Bildirimler, Güvenlik, Yapay Zeka API'leri vb.) erişmesini sağlar, sorunsuz yükleme ve kaldırma deneyimi sunar ve daha fazlasını gerçekleştirir.
Önkoşullar
.NET SDK: .NET SDK'sını yükleyin:
winget install Microsoft.DotNet.SDK.10 --source wingetwinapp CLI: Aracı winget aracılığıyla yükleyin
winapp:winget install Microsoft.winappcli --source winget
1. Yeni bir .NET uygulaması oluşturma
Basit bir .NET konsol uygulaması oluşturarak başlayın:
dotnet new console -n dotnet-app
cd dotnet-app
Her şeyin çalıştığından emin olmak için çalıştırın:
dotnet run
2. Kimliği denetlemek için kodu güncelleştirme
İlk olarak, project dosyanızı belirli bir Windows SDK sürümünü hedef olacak şekilde güncelleştirin. dosyasını açın dotnet-app.csproj ve değiştirin TargetFramework:
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
Şimdi içeriğini Program.csdeğiştirin:
using Windows.ApplicationModel;
try
{
var package = Package.Current;
var familyName = package.Id.FamilyName;
Console.WriteLine($"Package Family Name: {familyName}");
}
catch (InvalidOperationException)
{
Console.WriteLine("Not packaged");
}
3. Kimlik olmadan çalıştırma
dotnet run
"Paketlenmedi" ifadesini görmeniz gerekir.
4. winapp CLI ile project başlatma
winapp init komutu .csproj dosyalarını otomatik olarak algılar ve .NET özel bir kurulum çalıştırır:
winapp init
Sorulduğunda:
- Paket adı: Varsayılanı kabul etmek için Enter tuşuna basın
- Publisher name: Varsayılanı kabul etmek için Enter tuşuna basın veya adınızı girin
- Açıklama: Varsayılanı kabul etmek veya bir açıklama girmek için Enter tuşuna basın
- Sürüm: 1.0.0.0'ı kabul etmek için Enter'a basın
- Giriş noktası: Varsayılanı kabul etmek için Enter tuşuna basın (dotnet-app.exe)
- Windows App SDK kurulumu: Kararlı, Önizleme veya Deneysel'i seçin
Bu komut:
-
TargetFrameworköğesini, gerekirse,.csprojiçinde desteklenen bir Windows TFM'sine günceller. -
Microsoft.WindowsAppSDKveMicrosoft.Windows.SDK.BuildToolsNuGet paket referanslarını ekler - Uygulama kimliğiniz için
appxmanifest.xmlveAssetsklasörleri oluşturur.
Uyarı
Yerel/C++ projelerinin aksine .NET akışı bir winapp.yaml dosyası oluşturmaz. NuGet paketleri doğrudan sizin .csprojüzerinden yönetilir. Kopyalamadan sonra paketleri geri yüklemek için kullanın dotnet restore .
5. Kimlikle hata ayıklama
Yürütülebilir dosyayı oluşturun:
dotnet build -c DebugHata ayıklama kimliğini uygula:
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exeYürütülebilir dosyayı çalıştırın (yeniden derleyebileceğinden kullanmayın
dotnet run):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
Şunu görmeniz gerekir:
Package Family Name: dotnet-app_12345abcde
Hata ayıklama kimliğini otomatikleştirme (isteğe bağlı)
Bu hedefi dosyanıza .csproj ekleyin:
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Windows App SDK kullanma
Eğer winapp init komutunu çalıştırdıysanız, Microsoft.WindowsAppSDK zaten bir NuGet paket referansı olarak eklenmişti.
Program.cs Windows App Çalışma Zamanı API'sini kullanacak şekilde güncelleştirin:
using Windows.ApplicationModel;
class Program
{
static void Main(string[] args)
{
try
{
var package = Package.Current;
var familyName = package.Id.FamilyName;
Console.WriteLine($"Package Family Name: {familyName}");
var runtimeVersion = Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeInfo.AsString;
Console.WriteLine($"Windows App Runtime Version: {runtimeVersion}");
}
catch (InvalidOperationException)
{
Console.WriteLine("Not packaged");
}
}
}
7. MSIX ile paketle
Yayın için derleme:
dotnet build -c ReleaseGeliştirme sertifikası oluşturma:
winapp cert generate --if-exists skipPaketle ve imzala:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfxSertifikayı yükleyin (yönetici olarak çalıştırın):
winapp cert install .\devcert.pfxOluşturulan dosyaya çift tıklayarak
.msix.
Tavsiye
- Microsoft Store MSIX'i sizin için imzalar, göndermeden önce imzalamanız gerekmez.
- Her mimari için ayrı MSIX paketlerine ihtiyacınız olabilir:
dotnet build -c Release -r win-x64veyadotnet build -c Release -r win-arm64.
MSIX paketlemeyi otomatikleştirme (isteğe bağlı)
Bu hedefi .csproj'a ekleyin:
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
İlgili konular
Windows developer