2010-04-01 6 views
8

Nous avons deux projets qui sont deux bibliothèques de classes. Le projet 1 est un projet VS 2008 et cible le .NET Framework 3.5. Le projet 2 est un projet VS 2010 (candidat à la publication) qui cible le .NET Framework 4.0. Lorsque j'essaie d'ajouter une référence au projet 2 dans le projet 1, il échoue avec un message d'erreur moins que informatif. Je sais que si je change le Framework cible pour Project 2 à 3.5, alors l'ajout de la référence fonctionnera. Ma question est la suivante: si je ne change pas les cadres cibles, mais que je convertis le projet 1 en VS 2010, le référencement fonctionnera-t-il? En d'autres termes, existe-t-il une incompatibilité inhérente entre les bibliothèques de classes ciblant différentes versions de framework, ou est-ce que cela échoue pour moi parce que VS 2008 ne connaît pas le framework 4.0?Pourquoi l'ajout d'une référence au ciblage de projet .NET Framework 4.0 échoue-t-il?

Répondre

7

Oui, c'est un problème. Tout comme vous ne pouvez pas ajouter une référence à un assembly .NET 2.0 à partir d'un projet .NET 1.0 ou 1.1. Le .NET 4.0 est une nouvelle version runtime du cadre (CLR). Les versions .NET 3.5 et 3.0 utilisent la version 2.0 runtime du cadre (CLR).

Vous pouvez toujours ajouter une référence à partir d'un assemblage construit avec un environnement d'exécution plus récent à un assemblage avec un environnement d'exécution plus ancien, mais pas l'inverse.

De .NET 2.0 (3.0 et 3.5):
* Peut référence .NET 2.0 (3.0 et 3.5) assemblées
* Ne peut pas faire référence à .NET 4.0 ensembles

De .NET 4.0:
* peut référence .NET 4.0 ensembles
* peut référence .NET 2.0 (3.0 et 3.5) assemblées

2

versions Framework 2, 3.0, 3.5 exécution sur la version CLR 2, tandis que la version cadre 4 fonctionne sur la version CLR 4: la version 2 CLR ne chargerait pas un assembly qui indique qu'il nécessite CL R 4, donc Visual Studio essaie (mal, ça sonne) de vous le dire. Donc, pour répondre à votre question, oui, si vous mettez à jour votre projet 1 vers VS 2010 et changez le framework cible en version 4, (il le fait par défaut pour les projets C++, mais pas C#/VB.NET), il pourra Pour référencer le projet 2.

0

Si vous souhaitez utiliser l'assembly destiné à .net framework 4 à partir d'un assembly destiné à .net framework 3.5, vous pouvez exporter l'assembly (.net framework 4) via COM et l'importer dans l'assembly .net framework 3.5 .

Désolé pour mon mauvais anglais.

+0

Votre anglais est parfaitement compréhensible. Rien pour s'excuser. Toutes nos félicitations! :) –

Questions connexes