2010-05-07 16 views
16

Dans VS2010, Silverlight 4, .NET 4, j'ai un service WCF et une application Silverlight, et Silverlight accède à la classe sans ajouter de référence de service mais en partageant le contrat. Naturellement, cela signifie que j'ai le contrat dans une bibliothèque de classe Silverlight, et le service a une référence de projet à cette bibliothèque.VS2010: Avertissement sur l'ajout d'une référence de projet au projet Silverlight à partir du projet .NET

Étrangement, cela se traduit par un/\ icône sur la référence, et un avertissement:

Le projet « SilverlightClassLibrary1 » ne peut pas être référencé. Le projet référencé est destiné à une famille de frameworks différente (Silverlight)

Cependant, la référence fonctionne correctement (je peux utiliser l'interface dans mon application Silverlight) et se construit correctement.

Est-ce un bug? Ma conjecture est oui, puisque l'avertissement ment et disparaît également si vous ajoutez une référence d'assembly au lieu d'une référence de projet. J'ai déposé un bug et il y a aussi plus d'information here.

+0

Notez qu'il ne s'agit que d'un * avertissement *. J'ai vu similaire - en fait, c'est pourquoi je n'ai pas développé les "références" dans l'image 'SerializerGenerator', ici http://marcgravell.blogspot.com/2010/04/walkthrough-protobuf-net-on -phone-7.html (le projet 'MyDto' est, comme le vôtre, Silverlight). Bonne question, cependant. Bon point sur la différence entre la référence projet/dll. Je vais essayer ce que je fais ;-p –

+0

Intéressant. Se plaint-il si, plutôt que d'ajouter une référence DLL, vous incluez les Contracts dans une DLL Silverlight en liant les fichiers? – Doobi

+0

Non, il ne se plaint pas, puisque vous copiez littéralement le code dans un autre assemblage. – nlawalker

Répondre

15

Microsoft a répondu au bug que j'ai posté. L'avertissement est destiné à exister et destiné à être un avertissement et non une erreur, même si je dirais que le texte est mauvais. La raison en est que le référencement d'un projet Silverlight entraîne des échecs d'exécution si Silverlight n'est pas installé correctement sur la machine. Il n'y a actuellement aucun moyen de supprimer l'avertissement.

+2

Je suis un peu confus - cela signifie-t-il que Silverlight doit être installé sur le serveur hébergeant mon service wcf? Merci de nous fournir les informations utiles – tomfumb

+1

Hm, l'URL ne fonctionne plus. Est-ce que vous vous souvenez, par hasard, de son nom, alors je peux essayer de le retrouver? J'ai essayé de rechercher ["Le projet référencé est destiné à une famille de frameworks différente (Silverlight)"] (https://connect.microsoft.com/SearchResultsLive.aspx?SearchQuery=different%2bframework%2bfamily%2b (Silverlight)) dans Microsoft Connect, mais rien ne s'est passé. –

3

Si vous souhaitez que l'avertissement disparaisse, vous pouvez ajouter directement la DLL en utilisant "Ajouter une référence" -> "Parcourir" au lieu d'ajouter le projet via "Ajouter une référence" -> "Projets". C'était un problème très ennuyeux pour nous aussi et c'était la seule solution de contournement que nous avons trouvée qui a fonctionné.

+0

Ce n'est pas une bonne solution car elle ne concerne pas les versions Release vs Debug. Un espace de travail propre construit sur le type incorrect échouera car la DLL n'existera pas sauf si vous stockez les DLL statiquement dans votre contrôle source ou si vous définissez les répertoires de sortie pour Debug/Release dans le même dossier pour cette dépendance de projet. Même alors, en particulier pour les versions multi-thread, la solution manquera la dépendance du projet de construction pour calculer les bons ordres de construction des projets. – Shiv