Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Este guia funciona para a maioria dos tipos de projeto .NET. As etapas foram testadas com projetos baseados em console e interface do usuário, como WPF.
Este guia demonstra como usar a CLI do winapp em um aplicativo .NET para depurar utilizando a identidade do pacote e empacotar seu aplicativo no formato MSIX.
A identidade do pacote é um conceito básico no modelo de Windows app. Ele permite que seu aplicativo acesse APIs específicas do Windows (como Notificações, Segurança, APIs de IA etc.), e tenha uma experiência de instalação/desinstalação limpa, entre outras funcionalidades.
Pré-requisitos
.NET SDK: instale o SDK do .NET:
winget install Microsoft.DotNet.SDK.10 --source wingetCLI do winapp: instale a
winappferramenta por meio do winget:winget install Microsoft.winappcli --source winget
1. Criar um novo aplicativo .NET
Comece criando um aplicativo de console .NET simples:
dotnet new console -n dotnet-app
cd dotnet-app
Execute-o para verificar se tudo está funcionando:
dotnet run
2. Atualizar código para verificar a identidade
Primeiro, atualize o arquivo project para direcionar 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. Executar sem identificação
dotnet run
Você deve ver "Não empacotado".
4. Inicie o projeto com a CLI do winapp
O comando winapp init detecta automaticamente arquivos .csproj e executa uma configuração específica .NET:
winapp init
Quando solicitado:
- Nome do pacote: Pressione Enter para aceitar o padrão
- Nome do publicador: pressione Enter para aceitar o valor padrão ou insira 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)
- Windows App SDK configuração: Selecione Estável, Visualização ou Experimental
Esse comando:
- Atualiza o
TargetFrameworkem seu.csprojpara um TFM compatível com o Windows (se necessário) - Adiciona
Microsoft.WindowsAppSDKeMicrosoft.Windows.SDK.BuildToolsreferências de pacote NuGet - Cria as pastas
appxmanifest.xmleAssetspara a identidade do aplicativo
Observação
Ao contrário de projetos nativos/C++, o fluxo de .NET não cria um arquivo winapp.yaml. Os pacotes NuGet são gerenciados diretamente por meio de sua .csproj. Use dotnet restore para restaurar pacotes após a clonagem.
5. Depurar com identidade
Crie 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 arquivo executável (não use
dotnet runpois ele pode recompilar):.\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
Você deve ver:
Package Family Name: dotnet-app_12345abcde
Automatizando a identidade de debug (opcional)
Adicione este destino ao arquivo .csproj :
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Usando Windows App SDK
Se você executou winapp init, Microsoft.WindowsAppSDK já foi adicionado como uma referência de pacote NuGet. Atualize Program.cs para usar a API Windows App Runtime:
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. Empacotar com MSIX
Compilar para lançamento:
dotnet build -c ReleaseGerar um certificado de desenvolvimento:
winapp cert generate --if-exists skipEmpacotar e assinar:
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 arquivo gerado
.msix.
Dica
- A Microsoft Store assina o MSIX para você, não é necessário assinar antes do envio.
- Talvez você precise de pacotes MSIX separados para cada arquitetura:
dotnet build -c Release -r win-x64oudotnet build -c Release -r win-arm64.
Automatizando o empacotamento MSIX (opcional)
Adicione este destino 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