domingo, 1 de novembro de 2009
mais um capítulo da saga de desenvolver em Asp.Net:

precisei de uma ferramenta para gerar relatórios em um sistema em Asp.Net que desenvolvo. como utilizo o Visual Web Developer 2008, instalei o Report Viewer 2008, aprendi a usá-lo, montei um relatório bem legal e fui *tentar* publicar na Locaweb.

normalmente quando adiciono componentes aos Web Forms as dlls necessárias são copiadas para a pasta \bin do meu projeto automaticamente. neste caso, não havia sido copiada nenhuma, e tive a esperança ingênua de que não seria necessário. claro que era. ao tentar carregar a página do relatório online recebi a mesagem de erro:

Parser Error Message: Could not load file or assembly 'Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

uma rápida pesquisa no meu computador me indicou o local da dll solicitada. como utilizo o Windows 7 64 bits, no meu caso a dll estava em:
C:\Program Files (x86)\Microsoft Visual Studio 9.0\ReportViewer

fiz upload e tentei acessar novamente. agora apareceu o erro:
Parser Error Message: Could not load file or assembly 'Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

pesquisei no Wiki da Locaweb e vi que estava no caminho certo. só que no meu caso foi mais complexo, pois a nova dll requisitada não se encontrava na pasta do Report Viewer. fiz diversas buscas, procurei acessando os locais mais prováveis e não encontrei. como funcionava no meu computador e conferi que havia uma entrada no Web Config que fazia referência à essa dll, eu tinha certeza de que ela se encontrava em algum lugar, bastava descobrir onde.

lembrei do GAC, o Global Assembly Cache, e fui conferir. realmente, estava lá. só não havia como copiar a dll pelo Windows Explorer, tive que acessar pelo prompt de comando.
a maldita dll fica na pasta:
C:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.Common\9.0.0.0__b03f5f7f11d5
0a3a


a estrutura do .Net organiza a pasta C:\Windows\assembly de uma forma que pelo Windows Explorer aparece o seguinte:
na real, o que aparece ali é apenas uma referência ao real local da dll, que fica na pasta citada anteriormente.

copiei pelo prompt para a pasta \bin do meu projeto, fiz upload e......
An error occurred during local report processing.
The definition of the report 'Main Report' is invalid.
An unexpected error occurred in Report Processing.
Could not load file or assembly 'Microsoft.ReportViewer.ProcessingObjectModel, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.


bom, agora eu já sabia o que fazer. prompt do dos (cmd), copiar a Microsoft.ReportViewer.ProcessingObjectModel.dll da pasta GAC:


feito! levei 15 minutos pra construir o relatório e só 4 horas pra botar ele no ar. foi mais rápido dessa vez do que no problema anterior.

Ambiente de desenvolvimento:
Visual Web Developer 2008 Express
Report Viewer 2008
Windows 7 RC1 64 bits

3 comentários:

Anônimo disse...

Salvação da patria. Meu caro esta materia caiu como luva estava com este mesmo problema. Foi uma benção. vlw

Marcos Henke disse...

Yess! Objetivo alcançado : )

compartilhar experiências. uma coisa que eu aprendi com a internet foi que a probabilidade de alguém no mundo ter o mesmo problema, ou vir a ter, é imensa

Anônimo disse...

Obrigado! :D



Pesquisa Google

Creative Commons License

notificações por e-mail

endereço de e-mail:

by FeedBurner

sobre o autor...

Minha foto
Marcos Henke
Empresário e Engenheiro de Software.
Ver meu perfil completo