Uh oh!
There was an error while loading. Please reload this page.
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.
Uh oh!
There was an error while loading. Please reload this page.
…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>
rhfranzoni
commented
May 27, 2026
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