2012-08-22 58 views
5

我創建使用文件:我們可以在C#中創建文件時指定文件版本嗎?

File.WriteAllText(FILEPATHNAME, "SOME VALUE"); 

當創建一個文件,是否有可能以編程方式指定一個版本?所以如果有人使用FileVersionInfo對象,他們會得到我指定的版本?

+1

您可能會最終將文件內的版本保存爲一行文本。 – Adam

+0

嗨,這實際上是一個需要以特定方式格式化內容的特殊文件,所以我可能無法在文本文件本身中獲得特殊的版本信息。感謝您的回答。 – user1202434

回答

2

不,沒有辦法以的方式寫的文件版本,也沒有我真正意識到的。

可能的選項是:

寫入文件版本到一些格式化的數據內的文件本身。

我看到的最常見的方法是寫入文件的開頭或文件的第一行。因此,您可以快速訪問該信息,並通過閱讀或不閱讀來決定哪個過程。

+0

嗨,這實際上是一個需要以特定方式格式化內容的特殊文件,所以我可能無法在文本文件本身中獲得特殊版本信息。感謝您的回答。 – user1202434

+2

@ user1202434:如果您無法更改文件的格式,則有另一個選項(不確定它是否符合您的要求)正在使用(比如說)壓縮文件夾創建您的格式。所以你可以包含任何你想要的信息的清單。例如,像MS DOCX格式一樣(這是一個簡單的壓縮文件夾,裏面有很多文件)。 – Tigran

+0

感謝您的建議。我必須看看這是否適用於我..我試試。 – user1202434

4

FileVersionInfo是一個可以存儲在可執行文件中的二進制資源。但是,您正在編寫一個文本文件,並且這些文件不能包含二進制資源。要求文本文件的版本(由FileVersionInfo定義)確實有意義

3

不幸的是,這是不可能的。版本信息是附加到文件的嵌入式資源,只有二進制文件可以嵌入資源。

有關更多信息,請參閱FileVersionInfo Class的備註部分。

作爲一種替代方法,您可以爲每個包含版本信息的文本文件創建一個附加文本文件。

1

如果你確實真的不能輸入到文件本身的版本,也許嘗試將該版本放入NTFS「備用數據流」(ADS)中。

雖然你需要知道你在做什麼,因爲它有自己的陷阱。

+0

謝謝你的回答...每天學點新東西。在今天之前從來不知道「ADS」。 – user1202434

+0

@ user1202434:很高興你學到了一些東西!這就是我提到它的原因。 :)順便說一下,這也是Explorer如何存儲有關某些文件的摘要信息......在某些情況下它們很有用,但是您必須意識到它們可能在備份/文件副本等中丟失,並且它贏得了「如果用戶正在使用不同的文件系統,則工作。這通常是一個有風險的解決方案,除非你完全知道*你在做什麼......也要注意,.NET可能不支持開箱即用,我不知道。 – Mehrdad

相關問題