Eu tenho um projeto no qual I'gostaria de usar alguns dos recursos .NET 4.0 mas um requisito central é que eu possa usar o framework System.Data.SQLite que é compilado contra 2.X. Eu vejo menção de que isso é possível como a resposta aceita aqui mas eu não't vejo como realmente conseguir isso.
Quando eu apenas tento executar meu projeto 4.0 enquanto me refiro à montagem 2.X que eu recebo:
Montagem em modo combinado é construída contra a 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ção de configuração.
O que " configuração " adicional; é necessário?
Para usar um conjunto CLR 2.0 mixed mode assembly, você precisa modificar seu arquivo App.Config para incluir:
<?xml version="1.0"?>
useLegacyV2RuntimeActivationPolicy="true">
A chave é a bandeira "useLegacyV2RuntimeActivationPolicy". Isto faz com que o CLR utilize a versão mais recente (4.0) para carregar o seu conjunto de modo misto. Sem isso, ele não funcionará.
Note que isto só é importante para montagens em modo misto (C++/CLI). Você pode carregar todas as montagens CLR 2 administradas sem especificar isso em app.config
.
Este post do fórum no .NET Framework Developer Center. Ele pode fornecer alguma visão.
(Adicione ao arquivo de configuração do app's).
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
Dependendo da versão da estrutura que você're targetting, você pode querer olhar aqui para obter a string correta:
http://msdn.microsoft.com/en-us/library/ee517334.aspx
Eu desperdicei horas tentando descobrir porque meu cliente .Net 4.0 de lançamento requeria a versão completa. Eu usei isto no final:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"
sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>