Existe-t-il des barrières de compatibilité avec un assembly assembly .NET 4.0 dans un assembly .NET 2.0? Et vice versa? Plus précisément, j'étudie une mise à niveau vers Visual Studio 2010 lorsque vous utilisez une application tierce basée sur .NET 2.0. L'application est extensible par des hooks qui référencent mon code personnalisé. Et vice versa, mon code référencera les assemblys de l'application.Le code .NET 4.0 peut-il interopérer avec le code .NET 2.0?
Répondre
Le CLR, dans .NET 4, peut consommer des assemblages .NET 2 et les utiliser correctement.
Si vous souhaitez que votre application .NET 2 puisse charger des assemblys .NET 4, vous devez la configurer différemment. En définissant le paramètre requiredRuntime sur .NET 4 et la stratégie de chargement héritée, vous devriez pouvoir forcer l'application .NET 2 à charger à l'aide de CLR 4, ce qui permettrait d'utiliser vos assemblys .NET 4.
Configurez votre fichier app.config pour inclure:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
Cela étant dit, dans une situation comme ça, je recommande simplement en utilisant VS 2010 et .NET 3.5 au lieu ciblage de 4. .NET Cette compilerait vos assemblées pour CLR 2 et éviterait complètement ce problème.
Cela suppose, bien entendu, que le serveur .NET 4.0 est installé sur tous les serveurs sur lesquels vous exécutez votre application .NET 2.0. – cortijon
@MrGrumbe: Je pense que c'est une hypothèse sûre compte tenu de la question de l'OP. –
Les assemblys .NET 4.0 peuvent appeler des assemblys .NET 2.0 sans difficulté. Cependant, il est hautement improbable que vous puissiez appeler un assembly .NET 4.0 à partir de .NET 2.0, sauf si l'assembly .NET 4.0 n'a pas profité des nouvelles fonctionnalités d'infrastructure et que vous avez configuré les redirections d'assembly.
... si vous essayez de le faire et que cela peut entraîner un comportement inattendu. – Beachwalker
Jetez un oeil à [cette question] (http://stackoverflow.com/questions/1456785/a-definite-guide-to-api-breaking-changes-in-net). –