Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Este guia funciona para a maioria dos tipos de projetos .NET. Os passos foram testados tanto com projetos de consola como de interface como o WPF.
Este guia demonstra como usar a linha de comando winapp com uma aplicação .NET para depurar com a identidade do pacote e empacotar a sua aplicação como MSIX.
A identidade de pacote é um conceito central no modelo de Windows app. Permite que a sua aplicação acesse APIs específicas do Windows (como Notificações, Segurança, APIs de IA, etc.), tenha uma experiência limpa de instalação/desinstalação e muito mais.
Pré-requisitos
.NET SDK: Instalar o SDK .NET:
winget install Microsoft.DotNet.SDK.10 --source wingetWinapp CLI: Instale a
winappferramenta via winget:winget install Microsoft.winappcli --source winget
1. Criar uma nova aplicação .NET
Comece por criar uma aplicação simples de consola .NET:
dotnet new console -n dotnet-app
cd dotnet-app
Executa para garantir que tudo está a funcionar:
dotnet run
2. Atualizar código para verificar identidade
Primeiro, atualize o ficheiro do seu projeto para apontar uma versão específica do SDK do Windows. Abra dotnet-app.csproj e altere o TargetFramework:
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
Agora substitua o conteúdo de Program.cs:
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. Fugir sem identidade
dotnet run
Deves ver "Não embalado".
4. Inicialize o projeto com o winapp CLI
O comando winapp init deteta automaticamente ficheiros .csproj e executa uma configuração específica para .NET:
winapp init
Quando solicitado:
- Nome do pacote: Pressione Enter para aceitar o padrão
- Nome do Publicador: Pressione Enter para aceitar o padrão ou inserir o seu nome
- Descrição: Pressione Enter para aceitar o padrão ou inserir uma descrição
- Versão: Pressione Enter para aceitar 1.0.0.0
- Ponto de entrada: Pressione Enter para aceitar o padrão (dotnet-app.exe)
- Configuração do Windows App SDK: Selecione Estável, Pré-visualização ou Experimental
Este comando:
- Atualiza o
TargetFrameworkno seu.csprojpara um TFM suportado por Windows (se necessário) - Adiciona referências de pacotes NuGet
Microsoft.WindowsAppSDKeMicrosoft.Windows.SDK.BuildTools - Cria
appxmanifest.xmleAssetspastas para a identidade da tua aplicação
Observação
Ao contrário dos projetos nativos/C++, o fluxo do .NET não cria um ficheiro winapp.yaml. Os pacotes NuGet são geridos diretamente pelo seu .csproj. Uso dotnet restore para restaurar pacotes após clonagem.
5. Depuração com identidade
Constrói o executável:
dotnet build -c DebugAplicar identidade de depuração:
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exeExecute o ficheiro executável (não use
dotnet run, pois pode reconstruir):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
Você deve ver:
Package Family Name: dotnet-app_12345abcde
Automatização da identidade de depuração (opcional)
Adicione este destino ao seu .csproj ficheiro:
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Utilização do Windows App SDK
Se executaste winapp init, Microsoft.WindowsAppSDK já foi adicionado como uma referência de pacote NuGet. Atualize Program.cs para utilizar a API de Tempo de Execução do App Windows.
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. Pacote com MSIX
Build para lançamento:
dotnet build -c ReleaseGerar um certificado de desenvolvimento:
winapp cert generate --if-exists skipEmbalagem e assinatura:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfxInstalar o certificado (executar como administrador):
winapp cert install .\devcert.pfxInstale clicando duas vezes no ficheiro gerado
.msix.
Sugestão
- A Microsoft Store assina o MSIX por si, não precisa de assinar antes de submeter.
- Pode precisar de pacotes MSIX separados para cada arquitetura:
dotnet build -c Release -r win-x64oudotnet build -c Release -r win-arm64.
Automatização da embalagem MSIX (opcional)
Adicione este alvo ao seu .csproj:
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
Tópicos relacionados
Windows developer