feat(nuget): habilitar publicação dos 6 projetos netstandard como pacotes NuGet#81
feat(nuget): habilitar publicação dos 6 projetos netstandard como pacotes NuGet#81rhfranzoni wants to merge 2 commits into
Conversation
…otes NuGet Sub-issue Fase 1 do epico nfe/dfetech-distribution-api#137 (ZeusAutomacao#138). Empacota os 6 projetos netstandard ja existentes do fork como pacotes NuGet publicados no GitHub Packages (feed da org nfe), eliminando a necessidade de copia embedded libs/DFe.NET/ nos consumidores (Fase 2+3 em ZeusAutomacao#139). Descoberta da fase de investigacao (ZeusAutomacao#138 comment): o fork ja tem 6 projetos netstandard prontos (DFe.Classes netstandard1.3, DFe.Utils/NFe.Classes/ NFe.Servicos/NFe.Utils/NFe.Wsdl netstandard2.0) - nao precisa transplantar Shared Projects nem criar .Standard.csproj adicionais. Basta adicionar metadados de pacote e workflow de publicacao. ## Mudancas ### Directory.Build.props (raiz) Metadados compartilhados entre todos os projetos packaveis: Authors=NFE.io, licenca LGPL-2.1-or-later (mesma do upstream Zeus), URLs do repositorio, IncludeSymbols=true + SymbolPackageFormat=snupkg para debug nos consumidores, PackageReadmeFile apontando para README.md da raiz, EmbedUntrackedSources para SourceLink. Version default 1.0.0-local para builds locais; pipeline sobrescreve via -p:Version=. ### .csproj de cada projeto packavel Adicionado <PackageId> e <Description> em: - DFe.Classes/DFe.Classes.csproj -> NFEio.DFe.Classes - DFe.Utils/DFe.Utils.csproj -> NFEio.DFe.Utils - NFe.Classes/NFe.Classes.csproj -> NFEio.NFe.Classes - NFe.Servicos/NFe.Servicos.csproj -> NFEio.NFe.Servicos - NFe.Utils/NFe.Utils.csproj -> NFEio.NFe.Utils - NFe.Wsdl/NFe.Wsdl.csproj -> NFEio.NFe.Wsdl Prefixo NFEio.* evita colisao com nomes do upstream Zeus caso ambos sejam referenciados num mesmo consumidor durante a migracao gradual. ### .github/workflows/nuget-publish.yml Workflow CI que dispara em push de tags v* (release) e workflow_dispatch (testes manuais). Etapas: 1. Setup .NET 8 SDK 2. Resolve versao: tag (refs/tags/vX.Y.Z -> X.Y.Z), input manual, ou fallback 0.0.0-manual.{run_number} 3. dotnet pack dos 6 projetos -> ./artifacts/*.{nupkg,snupkg} 4. dotnet nuget push para https://nuget.pkg.github.com/nfe/index.json com auth via GITHUB_TOKEN (permissions: packages: write) 5. Upload de artifacts no Actions (retencao 30 dias) skip-duplicate evita falha quando re-publicando mesma versao. ## Smoke test local Validado dotnet pack dos 6 com -p:Version=1.0.0-smoke. Cada projeto gerou .nupkg + .snupkg com metadados corretos: NFEio.NFe.Servicos.1.0.0-smoke.nupkg declara dependencias para NFEio.DFe.Classes, NFEio.DFe.Utils, NFEio.NFe.Classes, NFEio.NFe.Utils e NFEio.NFe.Wsdl no group .NETStandard2.0. ## Como rodar Local (sem publicar): dotnet pack DFe.Classes/DFe.Classes.csproj -c Release -o ./artifacts -p:Version=1.0.0-test CI release: git tag v1.0.0 && git push origin v1.0.0 # workflow dispara automaticamente, publica em GitHub Packages CI manual: GitHub Actions -> Publish NuGet -> Run workflow -> input version=1.0.0-rc.1 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Este PR habilita o empacotamento e a publicação no GitHub Packages dos 6 projetos netstandard já existentes no fork, preparando a migração de consumidores para PackageReference (em vez de libs/DFe.NET/ embedded).
Changes:
- Adiciona
Directory.Build.propsna raiz com metadados NuGet compartilhados (authors/licença/URLs/tags/README/symbols). - Define
PackageIdeDescriptionnos 6.csprojpackáveis, usando o prefixoNFEio.*. - Cria workflow GitHub Actions para
dotnet packedotnet nuget pushem tagsv*e viaworkflow_dispatch.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
Directory.Build.props |
Centraliza metadados NuGet e empacota o README.md da raiz para todos os pacotes. |
DFe.Classes/DFe.Classes.csproj |
Define PackageId/Description do pacote NFEio.DFe.Classes. |
DFe.Utils/DFe.Utils.csproj |
Define PackageId/Description do pacote NFEio.DFe.Utils. |
NFe.Classes/NFe.Classes.csproj |
Define PackageId/Description do pacote NFEio.NFe.Classes. |
NFe.Servicos/NFe.Servicos.csproj |
Define PackageId/Description do pacote NFEio.NFe.Servicos. |
NFe.Utils/NFe.Utils.csproj |
Define PackageId/Description do pacote NFEio.NFe.Utils. |
NFe.Wsdl/NFe.Wsdl.csproj |
Define PackageId/Description do pacote NFEio.NFe.Wsdl. |
.github/workflows/nuget-publish.yml |
Pipeline de pack/publish para GitHub Packages com versão derivada de tag/dispatch. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…kages Address review comment do copilot-pull-request-reviewer no PR #81 (linha 80 do nuget-publish.yml): > Directory.Build.props habilita IncludeSymbols=true com SymbolPackageFormat > =snupkg, mas o workflow so faz push de ./artifacts/*.nupkg. Isso deixa os > .snupkg sem publicacao no feed, entao consumidores nao vao conseguir baixar > PDBs/symbols (debugging/SourceLink) via NuGet. Adicionado um segundo passo de `dotnet nuget push` para `*.snupkg`. O glob `*.nupkg` do passo anterior nao captura os symbol packages, e tentar fazer push de ambos num so glob (`*.{nupkg,snupkg}` com brace expansion) gera ambiguidade dependendo do shell. Dois passos explicitos sao mais robustos. GitHub Packages suporta .snupkg desde 2020 (referencia: docs.github.com/ packages/working-with-a-github-packages-registry/working-with-the-nuget-registry). --skip-duplicate evita falha em re-publicacao da mesma versao. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pivot — fechando como obsoletoEm 2026-05-26 pivotamos a estratégia: em vez de manter o fork Motivação
SubstituiçãoA migração foi implementada em https://github.com/nfe/dfetech-distribution-api/pull/143 — substitui o Status do PROs 6 commits desta branch ( |
Sumário
Empacota os 6 projetos netstandard já existentes do fork (
DFe.Classes,DFe.Utils,NFe.Classes,NFe.Servicos,NFe.Utils,NFe.Wsdl) como pacotes NuGet publicados no GitHub Packages (feed da orgnfe). Habilita a Fase 2+3 (nfe/dfetech-distribution-api#139), onde os consumidores vão removerlibs/DFe.NET/embedded e usarPackageReferenceaos pacotes desta PR.Descoberta da fase de investigação
A sub-issue ZeusAutomacao#138 partiu da premissa de que o fork precisaria de projetos
.Standard.csprojadicionais (transplantados dolibs/DFe.NET/embedded). Não precisa: o fork já tem 6 csproj netstandard prontos. A migração para netstandard foi feita pelo upstream Zeus em commits anteriores, fazendo a Fase 1 muito mais simples:DFe.Classesnetstandard1.3DFe.Utilsnetstandard2.0NFe.Classesnetstandard2.0NFe.Servicosnetstandard2.0NFe.Utilsnetstandard2.0NFe.Wsdlnetstandard2.0Não há
#if NETSTANDARDem nenhum arquivo.csdos 6 — o código já é compatível por padrão.CTe.*continua emv4.6.1(Framework). Não cabe nesta PR — pode virar sub-issue separada se a empacotagem do CTe for necessária.Mudanças
Directory.Build.props(novo, raiz)Metadados NuGet compartilhados entre os 6 projetos:
NFE.ioLGPL-2.1-or-later(mesma do upstream Zeus)RepositoryUrl,ProjectUrlapontando para este forkIncludeSymbols=true+SymbolPackageFormat=snupkgpara debug remotoPackageReadmeFilereferenciandoREADME.mdda raiz (mesmo arquivo em todos os pacotes)EmbedUntrackedSources=truepara SourceLinkVersiondefault1.0.0-localpara builds locais; pipeline sobrescreve via-p:Version=.csprojde cada projeto packávelAdicionado
<PackageId>e<Description>em cada um. PrefixoNFEio.*evita colisão com nomes do upstream Zeus caso ambos sejam referenciados num mesmo consumidor durante a migração gradual:.csprojDFe.Classes/DFe.Classes.csprojNFEio.DFe.ClassesDFe.Utils/DFe.Utils.csprojNFEio.DFe.UtilsNFe.Classes/NFe.Classes.csprojNFEio.NFe.ClassesNFe.Servicos/NFe.Servicos.csprojNFEio.NFe.ServicosNFe.Utils/NFe.Utils.csprojNFEio.NFe.UtilsNFe.Wsdl/NFe.Wsdl.csprojNFEio.NFe.Wsdl.github/workflows/nuget-publish.yml(novo)Workflow CI que dispara em:
v*— release versionada, extrai versão da tag (refs/tags/v1.0.0→1.0.0)workflow_dispatch— execução manual com input opcional de versão, fallback0.0.0-manual.{run_number}Etapas:
dotnet packdos 6 projetos para./artifacts/dotnet nuget pushparahttps://nuget.pkg.github.com/nfe/index.jsoncom auth viaGITHUB_TOKEN--skip-duplicatepermite re-publicar mesma versão sem falha (útil para retries).Smoke test local
Validado
dotnet packdos 6 projetos com-p:Version=1.0.0-smoke:Conferido
.nuspecdeNFEio.NFe.Servicos: dependências corretas para os 5 pacotes auxiliares no group.NETStandard2.0, metadados todos preenchidos (license, projectUrl, repository com commit SHA via SourceLink, README, tags).Como rodar pós-merge
Local (sem publicar):
CI release:
git tag v1.0.0 git push origin v1.0.0 # workflow dispara automaticamente, publica em GitHub PackagesCI manual:
GitHub Actions → Publish NuGet → Run workflow → input
version=1.0.0-rc.1Test plan
dotnet packdos 6 projetos local (1.0.0-smoke).nuspecvalidado com dependências corretasSystem.Security.Cryptography.Xml 4.4.0, não introduzida aqui)v1.0.0no fork, workflow publica pacotes, smoke test em projeto consumidor isolado instalandoNFEio.NFe.ServicosBloqueia
🤖 Generated with Claude Code