2008-09-17 41 views
1

我一直在嘗試Service Factory,並遇到了長文件名方面的一些問題 - 超過Vista/XP的限制。問題在於,當從模型生成代碼時,服務工廠將前綴與指定的命名空間相關聯。使文件夾結構巨大。例如,在服務工廠:極長的路徑/文件名問題

初始的C:\工作\ sftest \爲MyWebService

我創建每個模型與數據的合同和服務接口名稱的長度適中。我設置了命名空間是MyCompany.SFTest.MyWebservice

生成的代碼,我結束了

 
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 

在每個文件夾中的項目文件具有相同前綴的

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

這之後由於Windows無法接受超過特定長度的文件名,因此吹噓配方。

是否有必要在每個文件夾名稱中明確包含名稱空間? 顯然,在某些時候,我可能想將服務分支到另一個位置,但出於上述原因可能無法完成的原因。 有沒有解決這個問題的方法?

回答

1

我不知道服務工廠,所以我不知道這是否會有所幫助。無論如何:也許MSDN上的文章Naming a File or Directory可以提供幫助。

Windows API具有最大路徑長度(MAX_PATH = 260)。如果你想使用更長的路徑名,你將不得不使用Unicode版本的API,通過在路徑前加「\\?\」,即i。即使用

"\\?\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

謝謝。 Service Factory正在生成沒有任何用戶交互的代碼,所以除了通過創建解決方案的位置以及指定名稱空間之外,我無法操作目錄結構。我希望能夠使用我的命名空間,而不會出現這些問題。 – Xerx 2008-09-17 16:13:26

1

我們確實存在這個問題,我們通過使服務工廠成爲一個非常簡單的Wrap包裝來解決這個問題(已經標記了WCF的東西)。這給了我們一個通常很深的項目(工廠),然後是一個非常深的包裝工廠(沒有提取所有的界面和邏輯,什麼都沒有)。

我們仍然有一些問題 - 但主要是在客戶端 - 我們的服務器大部分是無故障的。