2008-09-17 4 views
1

J'ai essayé Service Factory et ai rencontré quelques problèmes en ce qui concerne les noms de fichiers longs - dépassant la limite dans Vista/XP. Le problème est que lorsque vous générez du code à partir de la fabrique de modèles de service, tout est précédé de l'espace de noms spécifié. Rendre la structure de dossier énorme. Par exemple à partir deUsine de service: extrêmement long chemin d'accès/noms de fichier

c: \ work \ sftest \ MyWebService

Je crée chacun des modèles avec la longueur moyenne des noms dans les contrats de données et interface de service. Je mets l'espace de noms pour être MyCompany.SFTest.MyWebservice

Après la génération de code je me retrouve avec

 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Business Logic 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Resource Access 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.DataContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.FaultContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.MessageContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Tests 

Dans chacun des dossiers est un fichier de projet avec le même préfixe

 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj 

Cette gonfle la recette car les fenêtres ne peuvent pas accepter les noms de fichiers dépassant une longueur spécifique.

Est-il nécessaire d'inclure explicitement l'espace de noms dans chacun des noms de domaine? Évidemment, à un moment donné, je pourrais vouloir brancher un service à un autre endroit, mais pour la même raison que ci-dessus pourrait être incapable de. Y at-il une solution de contournement pour cela?

Répondre

1

Je ne sais pas Service Factory donc je ne suis pas sûr si cela va aider. Quoi qu'il en soit: peut-être que l'article Naming a File or Directory de MSDN peut vous aider.

Windows API a une longueur maximale pour les chemins (MAX_PATH = 260). Si vous voulez utiliser des chemins plus longs, vous devrez utiliser les versions Unicode de l'API en préfixant vos chemins avec "\\? \", I. e. utiliser

"\\?\C:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj"

au lieu de

"C:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj"

Est-ce service usine permet cette notation?

+1

Merci. Service Factory génère le code sans aucune interaction avec l'utilisateur, donc je n'ai aucun moyen de manipuler la structure du répertoire autrement que par l'endroit où je crée la solution et ensuite quand je spécifie l'espace de noms. Je veux pouvoir utiliser mes espaces de noms sans ces problèmes. – Xerx

1

Nous avions exactement ce problème et nous l'avons contourné en faisant de notre usine de service une enveloppe très fine autour d'une bibliothèque normale (qui a été marquée avec les trucs WCF). Cela nous a donné un projet normalement profond (l'usine) et ensuite une usine de wrapper incroyablement profonde (sans tout cela extraire l'interface et la logique et quoi d'autre).

Nous avons encore quelques problèmes - mais surtout du côté client - nos serveurs sont pour la plupart sans problème.

Questions connexes