Erreurs de compilation dans Reference.cs après l'ajout d'une référence de service provoquée par un espace de noms en plusieurs parties

J'ai frappé cette étrange espace de noms problème lors de l'ajout de mon premier "Service de Référence" pour un projet client dans Visual Studio 2010.

Si mon projet de l'espace de noms par défaut utilise deux ou plusieurs parties, par exemple MyCompany.MyApp puis lors de l'ajout d'un Service de Référence une Référence.cs fichier est créé contenant les noms MyCompany.MyApp.ServiceReferenceName avec beaucoup d'auto-gen de code avec des noms pleinement qualifiés, par exemple System.SerializableAttributeSystem.Runtime.Serialization.DataContractAttribute.

La Référence.cs fichier sera plein d'erreurs de compilation car le compilateur commence le traitement de l'espace de noms System sous membre de la MyCompany.MyApp espace de noms. Vous obtenez beaucoup d'erreurs le long des lignes de:

The type or namespace name 'Runtime' does not exist in the namespace 'MyCompany.MyApp.System'...

Si je modifie l'espace de noms en haut de la Référence.cs fichier à quelque chose de simple, par exemple MyCompanyMyApp.ServiceRefernceName puis le compilateur se comporte et reconnaît l'espace de noms du Système de références que de decleration de .net de l'espace de noms System.

Je suis en utilisant une solution à ce problème pour le moment car j'ai vraiment envie de garder ma partie multi-espaces de noms. Mon alternative est d'ajouter global:: en face de l'espace de noms du Système de références pour forcer le compilateur à faire la bonne chose. En fait, si le " Ajouter une Référence de Service assistant utilise les modèles de T4 je peut juste modifier celles à incorporer ma solution de contournement à la source.

Questions

J'aimerais vraiment comprendre ce qui se passe ici et pourquoi un multi-partie de l'espace de noms sont les causes de ce problème. Sans doute il y a plus d'espaces de noms que je ne le pensais. Deuxièmement, voudrais vraiment travailler une meilleure solution que d'effectuer une recherche/remplacement global à chaque fois que je ajouter une Référence de Service ou de déblayage autour, avec certains des modèles T4.

source d'informationauteur Simon Needham