2011-07-21 57 views
1

我知道這可能聽起來很愚蠢,但我想在我的FileVersion中放入一個版本(因爲它不是用於引用,而是指示文件的版本是什麼),它不在標準System.Version格式major.minor.build.revision中。AssemblyFileVersionAttribute - 非版本數據可能嗎?

坦率地說,我想把我的存儲庫變更集散列在那裏,因爲它準確地表示文件的版本。 (即從給定變更集生成的dll)。

由於屬性需要一個字符串輸入(因爲Version不是常量),會這樣做嗎?

AssemblyInformationVersionAttribute會更適合這項工作嗎?或者當事情假設它是一個MS格式版本#時,這隻會讓我感到痛苦?

+0

難道你不能使用修訂部分來保存你的變更集哈希? –

+0

@Philipp Schmid:變更散列是十六進制的,並且很長。 '1.0.0.f516f300d51dd45fa83d99d64c70b5c7e97f6e6b'並不完全是一個有效的'System.Version' – Aren

+0

實際上,'System.Version'類型的修訂版是一個'short',所以它比其他部分的信息更少。 – Aren

回答

1

您正在公開任何人可用的東西。從屬性生成的非託管版本資源很容易訪問。 .NET中的FileVersionInfo類。請注意FileMajor/MinorPart屬性,它們是整數,而不是字符串。所以,是的,其中一個任何人即將跌倒的機率很渺茫,但不是零。 [彙編:AssemblyInformationalVersion(「blah」)]沒有幫助,那就變成了「產品版本」。

這不會留下任何東西,但[AssemblyTitle]。對你的用戶有些困惑,但僅此而已。

+0

有趣的是,有兩個原因沒有關係。 ** [1] **:該程序集不能被公衆訪問(這是ASP網站的libs /核心)。即便如此,散列並沒有真正暴露沒有回購的東西。 ** [2] **:看起來'FileVersionInfo'優雅地失敗。在'AssemblyInformationalVersion'中放置一個散列會導致'ProductVersion'輸出散列(因爲它是一個字符串),並且單個int部分要報告0.看起來這不是問題。這樣說,感謝您的意見,您可以讓我理解這樣做的含義等等。Thankyou :) – Aren

相關問題