O Visual Studio 2008 e 2010 se comporta de maneira diferente ao fazer referência aos conjuntos no sistema de arquivos?
Pergunta
Estou vendo um fenômeno estranho no Visual Studio 2010.
Minha configuração do projeto é essa (eu herdei isso - não posso alterá -lo tão cedo, infelizmente :-():
Um aplicativo WinForms que usa relatórios de cristal X (v10) como seu mecanismo de relatório; A edição completa do desenvolvedor CR X está instalada na minha caixa de dev
Vários aplicativos da WebForms que usam relatórios de cristal XI (v11) Como seu mecanismo de relatório - não é possível instalar a versão completa do CR XI, pois entra em conflito com Cr X Dev Edition ....
Para fazer as coisas funcionarem em nosso servidor de construção, também criei um Library
Pasta dentro do diretório de projeto do aplicativo WinForms com os arquivos de tempo de execução CR X de que preciso, bem como um Library
Pasta dentro do diretório de projetos do aplicativo da web com os arquivos de tempo de execução do CR XI.
No VS 2008, pude escolher as montagens necessárias da respectiva pasta da biblioteca em meus projetos WinForms (várias bibliotecas de classes etc.) e nos meus aplicativos da web. Tudo funcionou muito bem.
Quando atualizei para o Visual Studio 2010, agora de repente estou vendo:
Nos meus aplicativos WinForms, todas as referências aos arquivos de tempo de execução CR X estão sendo atualizados automaticamente para usar os arquivos Cr X do GAC - isso é não o que eu quero! Não ajuda se eu excluir essas referências e re-adquiri-las novamente, navegando para o
Library
Pasta - Quando eu as escolho, o VS2010 parece conversá -los automaticamente em referências GAC novamente ...Nos meus aplicativos da web, as coisas ficam ainda piores: quando eu escolho as assembléias de tempo de execução do CR XI do
Library
Pasta, novamente, o VS2010 parece detectar automaticamente que existem arquivos semelhantes (mesmo nome, mas versões diferentes) no GAC e usa esses arquivos - agora meus aplicativos da web não funcionam mais ...
O que está acontecendo com o VS 2010 aqui ?? Por que não pode deixar minhas seleções em paz e me deixe escolher meus arquivos de tempo de execução de um Library
Pasta em vez de insistir em ir ao GAC ?? O que mudou entre o VS 2008 e o VS 2010 a esse respeito ?? Alguém tem alguma ideia disso?
Solução
Pode ser útil para
(1) Vá para Ferramentas Opções Project & Solutions Build & Run e Altere a verbosidade do MSBUILD para 'Diagnóstico' e, em seguida, construa e na janela de saída, veja como a lógica de resolução de referência do MSBUILD está funcionando para esses conjuntos. Ou seja, se o VS ainda não fez algo ridículo com o arquivo .csproj subjacente
(2) Compare o XML no arquivo do projeto VS2008 versus o arquivo do projeto VS2010 para ver o que está no <Reference>
nós
Um palpite especulativo selvagem: o projeto VS2010 está segmentando ".NET 4.0 Client" (em vez de ".NET 4.0 (Full Framework)", e as bibliotecas precisam da estrutura completa, e o MSBuild vê essa dependência e está usando a lógica de fallback.