Desenvolvi um aplicativo usando o Entity Framework , SQL Server 2000, Visual Studio 2008 e Enterprise Library.
Funciona absolutamente bem localmente, mas quando implanto o projeto em nosso ambiente de teste, estou recebendo o seguinte erro:
Não foi possível carregar um ou mais dos tipos solicitados. Recupere a propriedade LoaderExceptions para obter mais informações
Rastreio de pilha: em System.Reflection.Module._GetTypesInternal (StackCrawlMark & stackMark)
em System.Reflection.Assembly.GetTypes ()
em System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly (contexto LoadingContext)
em System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache (contexto LoadingContext)
em System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache (Assembly assembly, Boolean loadReferencedAssemblies, Dictionary
2 knownAssemblies, Dictionary
2 & typesInLoading, List`1 & errors)em System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache (ObjectItemCollection objectItemCollection, assembly de montagem, Boolean loadReferencedAssemblies)
em System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType (Type type)
em System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType (Tipo de tipo, Assembly chamando Assembly)
em System.Data.Objects.ObjectContext.CreateQuery [T] (String queryString, ObjectParameter [] parâmetros)
O Entity Framework parece ter problema, alguma pista de como corrigi-lo?
fonte
Respostas:
Resolvi esse problema definindo como verdadeiro o atributo Copiar local das referências do meu projeto.
fonte
Este erro não tem uma resposta verdadeira à bala mágica. A chave é ter todas as informações para entender o problema. Provavelmente, um assembly carregado dinamicamente está ausente de um assembly referenciado. Essa montagem precisa estar no diretório bin do seu aplicativo.
Use este código para determinar o que está faltando.
fonte
throw new Exception(errorMessage);
, a esperança ajuda alguém.Uma solução que funcionou para mim foi excluir as pastas bin / e obj / e reconstruir a solução.
fonte
Duas soluções possíveis:
fonte
Como foi mencionado anteriormente, geralmente é o caso de uma assembléia não estar lá.
Para saber exatamente qual assembly está faltando, anexe seu depurador, defina um ponto de interrupção e, quando vir o objeto de exceção, faça uma busca detalhada na propriedade 'LoaderExceptions'. A montagem que falta deve estar lá.
Espero que ajude!
fonte
A solução foi verificar a LoaderException: no meu caso, alguns dos arquivos DLL estavam ausentes.
fonte
Certifique-se de permitir aplicativos de 32 bits no IIS se você implantou no IIS. Você pode definir isso nas configurações do seu pool de aplicativos atual.
fonte
Encontrei este erro com um aplicativo ASP.NET 4 + SQL Server 2008 R2 + Entity Framework 4.
Funcionaria bem na minha máquina de desenvolvimento (Windows Vista de 64 bits). Em seguida, quando implantado no servidor ( Windows Server 2008 R2 SP1), funcionaria até o tempo limite da sessão. Então, implantamos o aplicativo e tudo parecia bem e o deixamos por mais de 20 minutos de tempo limite da sessão e esse erro seria gerado.
Para resolvê-lo, usei esse código no blog de Ken Cox para recuperar a propriedade LoaderExceptions.
Para minha situação, a DLL ausente era
Microsoft.ReportViewer.ProcessingObjectModel
(versão 10). Essa DLL precisa ser instalada no GAC da máquina na qual o aplicativo é executado. Você pode encontrá-lo no Pacote Redistribuível do Microsoft Report Viewer 2010, disponível no site de download da Microsoft.fonte
Inicialmente, tentei o visualizador de log do Fusion, mas isso não ajudou, então acabei usando o WinDbg com a extensão SOS.
! dumpheap -stat -type Exceção / D
Então examinei o FileNotFoundExceptions. A mensagem na exceção continha o nome da DLL que não estava carregando.
NB, o / D fornece resultados com hiperlink, então clique no link no resumo para FileNotFoundException. Isso exibirá uma lista das exceções. Em seguida, clique no link para uma das exceções. Isso irá despejar essas exceções. Então você deve conseguir clicar no link Mensagem no objeto de exceção e verá o texto.
fonte
Se você estiver usando o EntityDataSource em seu projeto, a solução está em Correção: 'Não é possível carregar um ou mais dos tipos solicitados' Erros . Você deve definir o ContextTypeName = "ProjectNameNameSpace.EntityContainerName" '
Isso resolveu meus problemas ...
fonte
Minha instância desse problema acabou sendo uma referência ausente. Uma montagem foi referida no app.config, mas não tinha uma referência no projeto.
fonte
Se você estiver usando o Entity Framework , tente copiar as seguintes referências localmente.
Altere a propriedade "Copy Local" para "True" para essas referências e publique.
fonte
Outra solução para saber por que exatamente nada funciona (da Microsoft connect):
Adicione este código ao projeto:
Desative os conjuntos de serialização de geração.
fonte
Eu tinha um aplicativo Web .NET 4.0, ASP.NET MVC 2.0, Entity Framework 4.0 desenvolvido no Visual Studio 2010. Eu tive o mesmo problema, que funcionava em um servidor Windows Server 2008 R2, mas não em outro servidor Windows Server 2008 R2, mesmo que as versões do .NET e ASP.NET MVC fossem as mesmas, gerando esse mesmo erro que o seu.
Fui seguir a sugestão de miko, então instalei o Windows SDK v7.1 (x64) no servidor com falha, para poder executar! Dumpheap.
Bem, acontece que a instalação do Windows SDK v7.1 (x64) resolveu o problema. Qualquer dependência que faltava deve ter sido incluída no SDK. Pode ser baixado do Microsoft Windows SDK para Windows 7 e .NET Framework 4 .
fonte
Adicionando meu problema / solução específica a isso, pois este é o primeiro resultado dessa mensagem de erro. No meu caso, o erro foi recebido quando implantei um segundo aplicativo na pasta do meu primeiro aplicativo no IIS . Ambos estavam definindo a cadeia de conexão com o mesmo nome, resultando em um conflito entre o aplicativo filho e gerando essa mensagem de erro não óbvia (para mim). Foi resolvido adicionando:
no bloco de cadeias de conexão do aplicativo Web filho, o que impedia que ele herdasse as cadeias de conexão dos arquivos web.config mais altos na hierarquia, para que se pareça com:
Uma pergunta de referência do Stack Overflow que ajudou depois que eu determinei o que estava acontecendo era Um aplicativo filho herdará do seu web.config pai? .
fonte
Isso funcionou para mim. Adicione-o ao seu web.config
fonte
It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Meu problema foi resolvido depois que eu excluí os arquivos de montagem redundantes da
bin
pasta.fonte
Caso nenhuma das outras respostas o ajude:
Quando tive esse problema, o serviço do Windows foi criado para uma plataforma x64 e, inadvertidamente, eu estava executando a versão de 32 bits do InstallUtil.exe. Portanto, verifique se você está usando a versão correta do InstallUtil para a plataforma criada.
fonte
Outras sugestões são boas. No meu caso, o problema era que a caixa do desenvolvedor era uma máquina de 64 bits usando o local x86 de várias APIs, incluindo o Silverlight .
Ao alterar a plataforma de destino para corresponder ao servidor de 32 bits em que o aplicativo Web estava sendo implantado, removeu a maioria dos erros relacionados à impossibilidade de carregar um ou mais dos tipos solicitados.
fonte
Alterei a Propriedade da versão específica das atualizações para false e isso ajudou.
fonte
Eu tive a mesma mensagem de erro relatada ao compilar um pacote do Visual Studio (VSPackage). A solução inteira é compilada e o erro é gerado quando o pacote está sendo criado pelo CreatePkgDef. Dito isto, é claro que não consigo capturar o LoaderExceptions, pois não é meu aplicativo que o lança, mas a própria ferramenta da Microsoft. (Embora eu seja responsável pela confusão de CreatePkgDef.)
No meu caso, a causa principal foi que minha solução cria um MyDll.dll que já foi registrado no GAC (e eles são diferentes); portanto, o CreatePgkDef ficou confuso sobre qual usar e decidiu apenas lançar um erro que não é ' realmente útil. O MyDll.dll no GAC foi registrado pelo instalador do mesmo produto (obviamente uma versão anterior, com conteúdo / ligeiramente / diferente).
Como corrigi-lo
Alterar a AssemblyVersion foi bom o suficiente para mim. :)
Eu espero que isto tenha sido útil.
fonte
Eu tive o mesmo problema (mas no meu local) quando estava tentando adicionar a migração do Entity Framework com o Package Manager Console.
A maneira como resolvi foi criando um aplicativo de console em que Main () tinha o seguinte código:
Verifique se a classe Configuration é a configuração de migração do seu projeto com falha. Você precisará System.Data.Entity.Migrations para usar o DbMigrator.
Defina um ponto de interrupção no seu aplicativo e execute-o. A exceção deve ser detectada pelo Visual Studio (a menos que você tenha esse tipo de exceção definido para não interromper a sessão de depuração) e poderá encontrar as informações que está procurando.
A referência que faltava no meu caso era EFProviderWrapperToolkit.
fonte
Eu tive esse problema quando instalei um pacote NuGet em um dos projetos e esqueci de atualizar o outro projeto.
Eu resolvi isso fazendo apenas os dois projetos com o mesmo conjunto de referência.
fonte
Isso aconteceu comigo também. Resolvi o problema da seguinte maneira: Clique com o botão direito do mouse em Solution, Manage NuGet Packages for Solution ... Consolide pacotes e atualizei os pacotes para que estejam na mesma versão.
fonte
Defina o modo IIS de 32 bits como true, o modo de depuração como true no arquivo de configuração, a exclusão do
temp
diretório e a redefinição do IIS corrigem o problema temporariamente e ele volta depois de algum tempo.fonte
Verifique se cada um dos seus projetos está configurado corretamente no Gerenciador de Configurações .
Semelhante ao motivo de William Edmondson para esse problema, mudei minha configuração do Configuration Manager de "Debug" "Any CPU" para "Debug" ".NET". O problema era que a versão ".NET" NÃO estava configurada para criar TODOS os projetos, portanto algumas das minhas DLLs estavam desatualizadas (enquanto outras estavam atualizadas). Isso causou vários problemas ao iniciar o aplicativo.
A correção temporária foi fazer a sugestão de Kenny Eliasson para limpar os diretórios \ bin e \ obj. No entanto, assim que eu fiz mais alterações nos projetos que não foram compilados, tudo falhou novamente.
fonte
Eu também recebi esse problema ao criar o novo suplemento do Microsoft Word com o Visual Studio 2015. O problema é que eu tenho 2 versões do MS Office, 2013 e 2016. Desinstalo o MS Office 2013 e ele funciona.
fonte
Crio alguns projetos para o SharePoint e, é claro, os implantei. Uma vez aconteceu.
Encontrei um assembly antigo em C: \ Windows \ assembly \ temp \ xxx (com FarManager), removi-o após a reinicialização e todos os projetos foram criados.
Eu tenho uma pergunta para o MSBuild, porque nos assemblies de projetos vinculados como projetos e cada assembly é marcado como "Copiar local", mas não no GAC.
fonte
Eu sou capaz de corrigir esse problema marcando "Copiar Local = True" em todos os arquivos DLL referenciados no projeto, reconstruindo e implantando em um servidor de teste.
fonte
Eu tive um problema com o automap. Na
bin
pasta, o arquivo automap.4net.dll estava lá, mas por algum motivo o automap.xml e o automap.dll não estavam. Copiá-los para obin
diretório resolveu o problema.fonte