ZeusAutomacao / DFe.NET

Biblioteca para Geração de NFe(2.0, 3.10 e 4.0) e NFCe(3.10 e 4.0) e consumo dos serviços necessários à sua manutenção, conforme descritos em http://www.nfe.fazenda.gov.br/portal/principal.aspx
GNU Lesser General Public License v2.1
754 stars 477 forks source link

Suporte Net.core 2.0 #657

Closed rfunix closed 5 years ago

rfunix commented 6 years ago

Olá Pessoal,

Vocês saberiam me informar se existe algum planejamento para suportar o asp.net core 2.0 ?

Principalmente em relação ao SOAP, que não vai funcionar do jeito que está hoje, por causa da dependência do System.Web.Services.

Eu acabei recebendo este erro abaixo ao realizar o envio, por causa dessa dependência.

image

Obrigado desde já.

robertorp commented 6 years ago

Hoje atualmente não e suportado, alguns módulos são suportado mas nesse branch aqui https://github.com/ZeusAutomacao/DFe.NET/pull/503

Se tiver disponível poderia copiar algumas partes que faz a conexão com os WebServices Soap para o projeto aqui e implementar tudo no master. Nesse branch que estou fazendo CT-e/CT-eOS/MDF-e estão compatíveis com .net standard Já. NF-e ainda não.

Agora meu prazo para implementar o suporte no master para .net standard e 05/02/2018 a partir dai. Se quiser que dou prioridade para antes podemos combinar a parte.

rfunix commented 6 years ago

@robertorp,

Irei verificar este branch, ver como você implementou isso para CT-e/CT-eOS/MDF-e.

Se eu tiver alguma novidade, lhe informarei.

Obrigado pela resposta.

EduardoSantosGit commented 6 years ago

Pessoal esta semana realizamos um trabalho onde o projeto do Zeus NFe foi atualizado para a versão Standard 2.0 e os outros projetos que não podem ser standard mudamos para a versão 4.6.1.

Segue link do repositório: https://github.com/nfe/Zeus.Net.NFe.NFCe/tree/feature/alter-project-standard

@robertorp ,

Podemos fazer um PR com estas modificações?

robertorp commented 6 years ago

@EduardoSantosGit Faça o pull e vou analisar, no caso vou demorar a analisar pois preciso do suporte a .net 4.5 também Mas e algo totalmente possível hoje se você olhar nesse repositório ele tem suporte tanto para .net 4.5 e .net 4.6.x https://github.com/AutomacaoNet/MotorTributarioNet No caso vou fazer algo parecido. Então como disse vou analisar tudo detalhadamente vai demorar um pouco.

gblmarquez commented 6 years ago

@robertorp

O que fizemos foi deixar cada biblioteca na versão mais baixa possível do .NET Standard para aumentar a superfície de compatibilidade com os runtimes, conforme a tabela https://docs.microsoft.com/en-us/dotnet/standard/net-standard

Infelizmente as libs de XML, Certificado e Assinatura que usamos, só estão disponíveis em versão do .NET Standard, mais alta o que exige no geral aumentar a versão do .NET Standard ou incluir mais um pacote da Microsoft que seja substituto.

Temos algumas alternativas: 1: Utilizar libs de terceiros para XML, Certificado e Assinatura, porém essa decisão deixa o software mais dependente no futuro. 2: Criar projetos separados para cada versão (como você mesmo indicou), porém isso vai exigir ter condicionais de compilação no código e pacotes nuget diferentes, o que para frente se torna um problema pois uma hora não será mais necessário isso.

  1. Acredito que o caminho seja, deixarmos funcionando com a versão mais recente do .NET Standard, pois a Microsoft esta trabalhando para trazer as libs básicas para versões mais baixas e questionar o pessoal da comunidade sobre qual a necessidade deles de versão.
robertorp commented 6 years ago

@gblmarquez Subir a versão do Zeus hoje não tem como. Motivo uma vez subimos a aplicação da empresa do .net 4.5.2 para 4.6.x gerou muito transtorno com clientes usando windows 7 , eu tinha que instalar um service pack do windows. Negocio e estudarmos a fundo como solucionar isso. Já viram o pull que fiz?

https://github.com/ZeusAutomacao/DFe.NET/pull/503

Tinha feito algo simples nele e funcionou no linux um consulta status.

gblmarquez commented 6 years ago

@robertorp ainda não analisamos esse PR, pois as mudanças são bem grandes. Tem algum ponto especifico que gostaria que olhasse-mos?

Sim, faz sentido mantermos a retro compatibilidade.

robertorp commented 6 years ago

@gblmarquez um dos códigos que achei até mais simples e compatível com .net core e .net foi o de comunicação com a Sefaz https://github.com/robertorp/Zeus.Net.NFe.NFCe/blob/Refatoracao_Hard/src/DFe/Http/RequestWS.cs aqui esta ele.

Agora você mencionou algo na assinatura, a mesma não e compatível com ambos? Enfim poderia me dar mais detalhes de sua implementação onde sofreram dificuldades para implementar para .net core/standard

gblmarquez commented 6 years ago

@robertorp esse caminho poderia resolver sim, porém acredito que faça mais sentido usar uma lib como essa https://github.com/gravity00/SimpleSOAPClient, o que acha?

Se fizer sentido podemos fazer um PR nesse sentido.

Quando você fara o merge do #503?

robertorp commented 6 years ago

@gblmarquez Não vejo problema em utilizar ela desde que seja rapida igual oque fiz, pq estou impressionado com a velocidade que deu de diferença com os wsdl gerado pelo cmd. Essa mais baixa que fiz sem depender de lib de terceiros é muito muito muito rápida. Você sente a diferença na emissão. Não sei se chegou a testar, lembrando que não passei nf-e ainda.

Quando você fara o merge do #503? Não tenho data prevista. E acho ate que vou sugerir a criação de outro repositório porque no final das contas vai ter que manter as duas versões ao mesmo tempo durante ai pelo menos 1 ano né.

Braytiner commented 6 years ago

Atualmente estou com uma demanda de leitura do XML para importação das NFe em entradas de estoque, o projeto está suportando o carregamento de um xml? Desta forma também já poderia ir testando e sinalizar algum problema ocorrido na demanda...

marcosgerene commented 6 years ago

@Braytiner

Atualmente estou com uma demanda de leitura do XML para importação das NFe em entradas de estoque, o projeto está suportando o carregamento de um xml? Desta forma também já poderia ir testando e sinalizar algum problema ocorrido na demanda...

Sim, confira no demo de impressão que antes de imprimir ele carrega um XML em memória.

scalarerp commented 6 years ago

Estou implementando em AspNet Core2 / Net Standart, alterei as versões da NFE todos para 4.6.2 e compilei está ok, Minha classe de comunicação com o DFe é :net462;netstandard2.0

E vou consumir tudo em AspNet Core2, finalizando os testes volto a comentar aqui.

robertorp commented 6 years ago

OK mas o framework tem que manter compatibilidade com .net framework 4.5.2 não podemos perder essa compatibilidade também No caso veja se um projeto Shared pode ajudar nessa jogada de ter 2 projetos um no 4.5.2 e outro no 4.6.2 compartilhando mesmas classes

gblmarquez commented 6 years ago

@scalarerp em nosso branch todo o projeto do NFE já está em dotnet core, caso tenha interesse em apoiar. Ao final testando as partes podemos enviar um PR para o master.

scalarerp commented 6 years ago

Obrigado @gblmarquez , não achei este branch, tem o link por favor?

gblmarquez commented 6 years ago

@scalarerp estamos usando esse tag https://github.com/nfe/DFe.NET/tree/v4.0.1

robertorp commented 6 years ago

O unico problema da versão do @gblmarquez para não ter merge e porque precisa forçar o update de todo mundo no .net framework. Por isso não tem ainda.

robertorp commented 6 years ago

Vou ver se consigo estudar a possibilidade de usar #if netcore para fazer merge. E as classes que são compartilhadas criamos projetos shared.

Ou compartilha classes que estão em ambos e cria separado oque tem que ser separado. Enfim...

rftd commented 6 years ago

@robertorp faz igual fiz no ACBr.Net criar um projeto shared e os projetos herdam dele ai pode ser compilado em .net core e net 4.5.2

robertorp commented 6 years ago

@rftd Vou ver, já fiz assim no https://github.com/AutomacaoNet/MotorTributarioNet/ Obrigado!

lira92 commented 6 years ago

@gblmarquez vocês tem o pacote em algum lugar disponível? Myget ou algo assim? Vocês tem intenção de migrar os demais módulos pra .netstandard?

gblmarquez commented 6 years ago

@lira92 vou pedir para o @EduardoSantosGit subir em um myget aberto e já publicamos aqui.

gblmarquez commented 6 years ago

@lira92 segue o myget https://www.myget.org/feed/nfe/package/nuget/Zeus.Net.NFe.NFCe

scalarerp commented 6 years ago

Bom dia, acabei meus testes aqui com a NFE e NFCE, infelizmente não deu certo por causa do System.Web, observei que só é usado no projeto Nfe.Wsdl, então fiz alguns testes com o branch do @gblmarquez , até ai tudo bem.

O problema é que estou sem alternativas, se o @robertorp tiver previsao da data para a implantação do SHARED que comentou ficaria agradecido, só para terminar o projeto aqui.

robertorp commented 6 years ago

@scalarerp não vou dar prazo. Vou simplesmente começar passando todos projetos para shared. Para depois olhar o código do @gblmarquez para ai sim estar colocando tudo em um local somente. Logo então pode ser um trabalho um tanto grande. Até porque faço por fora em casa, horários comerciais, somente faço coisas rápidas. (Trabalho né rsrs)

scalarerp commented 6 years ago

Pessoal, vou dar boas notícias, nos testes com .netStandart 2.0 e ASP.NET Core 2 para Validação, Assinatura, Consulta e Autorização está funcionando legal, próximo passo é fazer um teste em produção em um server 2008 mas ai aviso pra todos.

Aqui está o projeto:

2018-07-12_10-14-34

Alterações que fiz estão descritas +- aqui: https://gist.github.com/scalarerp/c98122d61bbbcebf1fc773a4275d3b6d

A maior alteração que fiz foi copiar o projeto Nfe.WSDL do @gblmarquez https://github.com/nfe/DFe.NET/tree/v4.0.1/NFe.Wsdl que já está em .netstandart 2.0 Nos outros alterei para .net462 sem problemas, talvez uma ou outra correção simples.

scalarerp commented 6 years ago

Galera, depois de meio dia no pau, tá tudo funcionando em ASP.NET CORE 2.0, só tive problema com o certificado RAIZ, que tem um esquema diferente para instalar no server para funcionar com o IIS, e também o problema da validação do schema XML que já passei ai num GIST como alterar, inclusive precisa alterar no Zeus DFE, vi que tem vários issues com este mesmo problema. Implantado 4.0 funfano.

stale[bot] commented 5 years ago

Essa Issue foi marcada automáticamente como obsoleta, devido a um longo periodo de inatividade. Se nenhuma interação ocorrer nos próximos dias, ela será encerrada. Agradecemos a sua contribuição, esse processo é apenas para manter o repositório mais organizado.

RMTTyszka commented 5 years ago

Bom dia Como esta a compatibilidade atual com .netStandard 2.0?

Não conheço o projeto de vocês mas eu tenho uma equipe disposta a ajudar.

robertorp commented 5 years ago

Entre em contato comigo, mas a portabilidade já esta em andamento, sem previsão até o momento, pois depende do tempo que tenho disponível. Mas entre em contato comigo que explico detalhes se quiser dar continuidade ao suporte eu vou acompanhando e indicando o que se deve ser feito. robertoalves18@hotmail.com

adeniltonbs commented 5 years ago

@rfunix Já migramos pelo menos o MDF-e para .NET Standard. Aguardando revisão para fazer um pull request. Se desejar acessar antecipadamente, o código está em https://github.com/andrebts/DFe.NET/tree/NET_Standard.

danilobreda commented 5 years ago

@robertorp mandei um email para robertoalvespereira18@gmail.com porem sem contato, vou enviar para robertoalves18@hotmail.com, estou convertendo o NFe para .net standard. Porem o maior problema é a necessidade de migrar todo o projeto WSDL, como foi com o CTe (assim como classes de serviços); Aguardo seu contato.

robertorp commented 5 years ago

@danilobreda Boa noite! realmente andei meio desligado das coisas nos últimos dias hehe. Mas estou firme e forte no projeto! fala comigo no skype amanhã robertoalves18@hotmail.com , que trocamos algumas ideias de como facilitar a migração do projeto nf-e.