Usuário com melhor resposta
TypeForwardedTo

Pergunta
-
Estou tentando executar o exemplo neste site, porem esta dando erro alguem sabe pq?
http://www.nerdpad.com/how-to/net-type-forwarding-moving-types-between-assemblies
Respostas
-
Olá Ricardo,
Isso acontece porque o Visual Studio percebe que você poderia referenciar diretamente o assembly quando tenta compilar a solução e quer que você - já que está compilando uma nova versão - corrija isso (afinal o TypeForwardedTo existe apenas para não quebrar o funcionamento de assemblies que já existem durante o deploy).
Para testar o funcionamento do TypeForwardedTo, experimente:
- Remover os comentários da classe "Dog" que está dentro do projecto "Animal" e comentar o "TypeForwardedTo" no AssemblyInfo
- Recompile toda a solução, execute o Consumer 1, e repare que a classe utilizada é a classe do assembly "Animal"
- Agora apague (ou comente) a classe "Dog" do projeto "Animal", coloque o "TypeForwardedTo" de volta como estava, e compile apenas o projeto Animal (botão direito no projeto Animal => Rebuild).
- E agora sim, sem tentar recompilar o Consumer1, vá no Windows Explorer e execute o Consumer1.exe e repare que, como o Animal.dll faz o TypeForwardedTo, ele automaticamente usa a classe "Dog" do assembly "Canine" - que é o objetivo desse exercicio.
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Marcado como Resposta ricardo_david terça-feira, 31 de julho de 2012 13:31
Todas as Respostas
-
Clique em cada projeto com o botão direito do mouse e clique e Rebuild.
No projeto Consumer1, dentro da pasta Reference, delete o projeto Animal.
Clique com o botão direito na pasta Reference e clique em Add Reference, e coloque novamente o projeto Animal.No projeto Animal, tire o comentário da classe Dog
Se a sugestão resolver o problema, favor marcar como Resposta.
- Editado Lucas_Santos quinta-feira, 26 de julho de 2012 16:24
-
-
-
no Consumer 1, da o seguinte erro:
Error 1 The type name 'Dog' could not be found. This type has been forwarded to assembly 'Canine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Consider adding a reference to that assembly. C:\Documents and Settings\rdavid\Desktop\Teste\TypeForwardedToSample\Consumer1\Program.cs 32 13 Consumer1
-
-
-
-
-
-
Isso quebra a ideia do TypeforwardedTo.
o TypeforwardedTo é justamento para que o consumer1 entenda que a classe Animal.Dog foi movida para um outro assembly(Canino.Dog).
Em um contexto em que você tenha vários sistemas fazendo referencia a classe Animal.Dog e migre e a classe para Canino.Dog. o TypeforwardedTo evita que tenha que recompilar todos eles.
Entendeu?!
-
Olá Ricardo,
Isso acontece porque o Visual Studio percebe que você poderia referenciar diretamente o assembly quando tenta compilar a solução e quer que você - já que está compilando uma nova versão - corrija isso (afinal o TypeForwardedTo existe apenas para não quebrar o funcionamento de assemblies que já existem durante o deploy).
Para testar o funcionamento do TypeForwardedTo, experimente:
- Remover os comentários da classe "Dog" que está dentro do projecto "Animal" e comentar o "TypeForwardedTo" no AssemblyInfo
- Recompile toda a solução, execute o Consumer 1, e repare que a classe utilizada é a classe do assembly "Animal"
- Agora apague (ou comente) a classe "Dog" do projeto "Animal", coloque o "TypeForwardedTo" de volta como estava, e compile apenas o projeto Animal (botão direito no projeto Animal => Rebuild).
- E agora sim, sem tentar recompilar o Consumer1, vá no Windows Explorer e execute o Consumer1.exe e repare que, como o Animal.dll faz o TypeForwardedTo, ele automaticamente usa a classe "Dog" do assembly "Canine" - que é o objetivo desse exercicio.
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Marcado como Resposta ricardo_david terça-feira, 31 de julho de 2012 13:31