2010-10-29 78 views
2

在stackoverflow上有幾個相關的問題,但無論我的情況是不同的,或者我太愚蠢無法將這些與情況相關聯。我希望有人能幫助我。此外,我甚至沒有太多的.NET開發人員,所以我提前道歉,任何錯誤的術語使用。Directory.SetCurrentDirectory拋出PathTooLongException

我的方案如下所示:用於部署我們的.net應用程序(一次單擊?)的工具將其放入全名超過300個字符的目錄中。應用程序使用第三方組件(稱爲dbstore)來處理駐留在應用程序部署目錄中的指定文件。

到目前爲止,我們使用的是Assembly.GetExecutingAssembly().GetName().CodeBase來構造傳遞給dbstore的文件的全限定名。但是,dbstore使用舊式API並在嘗試打開文件時失敗。

由於dbstore不會很快發生變化,因此建議將應用程序chdir移至部署目錄並將當前目錄中的相對路徑名稱傳遞給它。這也是在接受的迴應中描述的方法PathTooLongException in C# code

但是我發現Directory.SetCurrentDirectory也會拋出PathTooLongException。甚至在我使用UNC路徑名時也會發生這種情況,例如,以\\?\0000000000000\...

開頭的名稱我是否在做一些根本性錯誤?是否有另一個功能使用?

編輯:它似乎沒有辦法實現我在找什麼。據我所知,沒有辦法將當前目錄設置爲長路徑。

回答

0

使用Environment.SetCurrentDirectory()時會得到類似的結果嗎?

如果是這樣,您可能需要在子文件夾後更改目錄子文件夾。

編輯:
Windows實際上設置的255個字符的文件路徑(操作系統)或260個字符(Vista)的限制。 請注意,此限制不適用於文件系統,因此您可以將文件存儲在如此長的目錄路徑中,但Windows資源管理器和許多Windows服務無法從此路徑讀取。

實際上它似乎也包含.NET框架方法,因爲您無法訪問這些文件。您可能需要編寫自己的文件系統API,但這有點太多了。你不能只是縮短文件路徑嗎? Windows是否提供縮短的方式來處理文件(如8個八位字節文件名)?

來源:http://labnol.blogspot.com/2006/10/limitations-with-long-file-names-on.html

+0

沒有'Environment.SetCurrentDirectory'但屬性'Environment.CurrentDirectory'可以分配。我得到了同樣的結果。即使我在子文件夾之後更改子文件夾,我也會在文件名長度限制後得到相同的異常,而與我使用的兩個函數中的哪一個無關。 – 2010-10-29 10:32:51

+0

什麼是您的操作系統? – 2010-10-29 10:35:42

+0

嗨伊戈爾我在Windows XP SP3上運行這個。 – 2010-10-29 10:40:52