2008-09-17 8 views
1

私はService Factoryを試してきましたが、長いファイル名に関していくつかの問題に遭遇しました - Vista/XPの限界を上回っています。問題は、モデルサービスファクトリからコードを生成するときに、すべてに指定された名前空間が付加されることです。フォルダ構造を巨大にする。サービスファクトリ:非常に長いパス/ファイル名の問題

Cで始まる例えば:仕事\ sftest \ MyWebService

私は、データコントラクトとサービス・インターフェースでの名前の適度な長さの各モデルを作成します\。私は同じプレフィックス

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

これをしてプロジェクトファイルを、私は、フォルダの下にそれぞれ

 
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 

で終わるコードをされて生成した後

MyCompany.SFTest.MyWebservice

する名前空間を設定します窓は特定の長さを超えるファイル名を受け入れることができないので、レシピを爆破する。

各フォルダ名に名前空間を明示的に含める必要がありますか? 明らかに、ある時点で私は別の場所にサービスを枝分かれさせたいかもしれませんが、上記と同じ理由でサービスができないかもしれません。 これに対応する方法はありますか?

答えて

1

私はサービスファクトリを知らないので、これが役立つかどうかはわかりません。とにかく:おそらくMSDNのNaming a File or Directoryという記事が役に立ちます。

Windows APIにはパスの最大長(MAX_PATH = 260)があります。より長いパス名を使用する場合は、パスの先頭に "\\?\"を付けてUnicodeバージョンのAPIを使用する必要があります。 e。代わりに

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

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

を使用するサービス工場は、その表記を許可していますか?

+1

ありがとうございました。 サービスファクトリはユーザーとのやりとりなしにコードを生成しているので、ソリューションの作成場所以外のディレクトリ構造を操作する方法はありません。私はこれらの問題がなければ私の名前空間を使用できるようにしたい。 – Xerx

1

私たちはまさにこの問題を抱えていました。私たちは、サービスファクトリを通常のライブラリ(WCFのものでマークアップされている)を囲む非常に薄いラッパーにすることで、その問題を回避しました。これは私たちに通常深いプロジェクト(工場)をもたらし、その後は驚くほど深いラッパー工場(インターフェイスとロジックを抽出するものとしないもの)を与えました。

私たちはまだいくつかの問題を抱えていますが、主にクライアント側にあります。私たちのサーバは、ほとんどの場合問題なく動作します。