Eu tenho um projeto no qual gostaria de usar alguns dos recursos do .NET 4.0, mas um requisito básico é que eu possa usar a estrutura System.Data.SQLite que é compilada no 2.X. Vejo menção disso possível, como a resposta aceita aqui, mas não vejo como realmente conseguir isso.
Quando tento executar meu projeto 4.0 enquanto faz referência ao assembly 2.X, recebo:
O conjunto de modo misto é construído com base na versão 'v2.0.50727' do tempo de execução e não pode ser carregado no tempo de execução 4.0 sem informações adicionais de configuração.
Que "configuração adicional" é necessária?
SGEN
, a correção precisará estar em um arquivosgen.exe.config
ao lado desgen.exe
. Por exemplo, para o VS 2015, crieC:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\sgen.exe.config
. Fonte: SGEN modo misto montagem conteúdo do arquivo mínimos:<configuration><startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
Respostas:
Para usar um assembly de modo misto CLR 2.0 , você precisa modificar o arquivo App.Config para incluir:
A chave é a
useLegacyV2RuntimeActivationPolicy
bandeira. Isso faz com que o CLR use a versão mais recente (4.0) para carregar seu assembly de modo misto. Sem isso, não vai funcionar.Observe que isso só importa para assemblies de modo misto (C ++ / CLI). Você pode carregar todos os assemblies CLR 2 gerenciados sem especificar isso
app.config
.fonte
Esta postagem do fórum no .NET Framework Developer Center. Pode fornecer algumas dicas.
(Adicione ao arquivo de configuração do aplicativo.)
fonte
Dependendo da versão da estrutura que você está alvejando, convém procurar aqui a string correta:
http://msdn.microsoft.com/en-us/library/ee517334.aspx
Eu perdi horas tentando descobrir por que minha versão direcionada para o cliente .NET 4.0 exigia a versão completa. Eu usei isso no final:
fonte
Depois de definir o arquivo app.config , o visual studio gerará uma cópia na pasta bin denominada App.exe.config . Copie isso para o diretório do aplicativo durante a implantação. Parece óbvio, mas surpreendentemente muitas pessoas perdem esse passo. Os desenvolvedores do WinForms não são usados para configurar arquivos :).
fonte
Usar assemblies 2.0 e 4.0 juntos não é muito simples.
A ORDEM das declarações da estrutura suportada no app.config realmente afeta a exceção do modo misto que está sendo lançado. Se você inverter a ordem da declaração, receberá um erro no modo misto. Este é o objetivo desta resposta.
Portanto, se você receber o erro em um aplicativo Windows Forms, tente isso, principalmente aplicativos Windows Forms.
Ou se o projeto não for Windows Form. Em um projeto da Web, adicione-o ao arquivo web.config.
fonte
Conseguiu resolver o problema adicionando o elemento "startup" com o conjunto de atributos "useLegacyV2RuntimeActivationPolicy" .
Mas teve que colocá-lo como o primeiro elemento filho da marca de configuração no App.config para que ele entre em vigor .
fonte
version="v2.0"
?O exemplo acima não funcionou para mim (estou trabalhando em um aplicativo da web) - mas isso ...
Edite o arquivo sgen.exe.config na pasta (eu tive que criar um primeiro); C: \ Arquivos de programas (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools (Há também um na pasta v7.0, mas não preciso alterá-lo, estou usando o VS2012)
Os conteúdos do XML devem ficar assim (o mesmo nas respostas anteriores)
fonte
Se você estiver trabalhando em um serviço da Web e o assembly v2.0 for uma dependência que foi carregada pelo WcfSvcHost.exe , você deverá incluir
em .. \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ WcfSvcHost.exe.config arquivo
Dessa forma, o Visual Studio poderá enviar as informações corretas através do carregador em tempo de execução.
fonte
Corri para esse problema quando mudamos para o Visual Studio 2015 . Nenhuma das respostas acima funcionou para nós. No final, funcionamos adicionando o seguinte arquivo de configuração a TODOS os executáveis do sgen.exe na máquina
Particularmente nesse local, mesmo quando segmentávamos o .NET 4.0:
Ferramentas C: \ Arquivos de programas (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6
fonte
Eu usei esta configuração:
Trabalhou para mim
fonte
Eu tive esse problema ao atualizar para o Visual Studio 2015 e nenhuma das soluções postadas aqui fez alguma diferença, embora a configuração esteja correta no local da alteração. Corrigi esse problema adicionando esta configuração:
Para: C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ TE.ProcessHost.Managed.exe.config
Em seguida, reiniciei o Visual Studio.
fonte
Eu encontrei uma maneira de contornar isso depois de 3-4 horas de pesquisa no Google. Eu adicionei o seguinte
Se isso não resolver o seu problema, então -> Nas referências do projeto em
Right Click on DLL
que você está recebendo o erro ->Select Properties
->Check the Run-time Version
-> Se estiver,v2.0.50727
então sabemos o problema. O problema é: - você está tendo A2.0 Version of respective DLL.
solução é: - Você pode,delete the respective DLL
nas referências do projeto e,download the latest version of DLL's
no site correspondente, adicionar a referência da referência mais recente da DLL da versão, para que funcione.fonte
Eu estava enfrentando esse mesmo erro e passei sempre adicionando as instruções de inicialização sugeridas a vários arquivos de configuração em minha solução, tentando isolar a incompatibilidade da estrutura. Nada funcionou. Também adicionei informações de inicialização aos meus esquemas XML . Isso também não ajudou. Examinar o arquivo real que estava causando o problema (que apenas diria que foi "movido ou excluído") revelou que na verdade era o License Compiler (LC).
A exclusão do arquivo licens.licx incorreto parece ter corrigido o problema.
fonte
Eu estava enfrentando um problema semelhante ao migrar algum código do VS 2008 para o VS 2010. Fazer alterações no arquivo App.config resolveu o problema para mim.
fonte
Adicione o seguinte neste local C: \ Arquivos de programas (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools \ x64 FileName: sgen.exe.config (se você não encontrar este arquivo, crie e adicione um)
Fazer isso resolveu o problema
fonte
Eu uso
Funciona, mas logo antes da
</configuration>
tag, caso contrário, a tag de inicialização não funciona corretamentefonte
Também tive esse problema com a biblioteca de classes, se alguém tiver o problema com a biblioteca de classes adicionado ao seu aplicativo principal. Basta adicionar
para o aplicativo principal que seria escolhido pela biblioteca de classes.
fonte