[英]How can I make the AssemblyInfo version of a C# .NET CF program propagate to the Explorer Properties window?
看起來如果您編譯Visual Studio解決方案並在AssemblyInfo.cs文件中有一個版本#,那應該傳播到Windows資源管理器屬性對話框。 這樣,有人可以直接右鍵單擊* .exe並單擊“屬性”以查看版本#。 Visual Studio中是否有特殊設置才能實現此目的?
編輯:我應該提到,這是特別適用於.NET Compact Framework 2.0,它不支持AssemblyFileVersion。 所有希望都失去了嗎?
請注意,在.NET Compact Framework下, AssemblyFileVersion屬性不可用!
請參閱Daniel Mooth的這篇文章以獲得解決方法。
AssemblyFileVersion屬性是否有幫助?
您需要添加另一個屬性:
[assembly: AssemblyFileVersion("1.0.114.0")]
請注意,您仍需要AssemblyVerison,以正確識別.NET運行時的程序集。
版本號確實傳播到屬性對話框中的“版本”選項卡,但不會傳播到摘要。 不幸的是,VS不會自動填充文件的摘要信息,因為信息是附加到文件本身的元數據。 但是,您可以使用Microsoft提供的免費DSO OleDocument Properties Reader自行訪問和操作摘要信息。
您可以從以下網站獲取該庫: http : //www.microsoft.com/downloads/details.aspx? FamilyId = 9BA6FAC6-520B-4A0A-878A-53EC8300C4C2&displaylang = en
有關其使用的更多信息,請訪問: http : //www.developerfusion.co.uk/show/5093/
編輯 :如上所述,pb和Nigel Hawkins 可以通過使用AssemblyFileVersion屬性獲取屬性以進行傳播:
[assembly: AssemblyFileVersion("1.0.114.0")]
我不確定RevisionNumber是否是正確的字段。
嘗試使用資源管理器,右鍵單擊 - >版本選項卡,然后查看那里的AssemblyVersion字段。
在我的項目中,我們使用FileVersion = YYYY.MM.DD.BUILD(例如,2008.9.24.1),但ProductVersion應該是major.minor.revision.BUILD。 我們使用AssemblyInformationalVersion解決這個問題。
AssemblyVersion =“MAJ.MIN.REV.1” - >由.NET使用
AssemblyInformationalVersion =“MAJ.MIN.REV.XXX” - >在資源管理器的ProductVersion中使用
AssemblyFileVersion =“YYYY.MM.DD.XXX” - >在資源管理器的FileVersion中使用
注意:此答案用於訪問.NET CF 3.5應用程序中的AssemblyInfo屬性。 它不會傳播到Windows資源管理器內的可執行文件的“屬性”(但可用於寫入文件,控制台或顯示在應用程序中)
我知道這是一個非常古老的問題,但是我找到了一個解決方案,我發現使用Reflection和Linq來獲取“AssemblyInformationalVersion”(在較新的Visual Studio項目中的產品版本)。
首先,我將它添加到AssemblyInfo.cs(用你想要使用的任何東西替換字符串):
[assembly: AssemblyInformationalVersion("1.0.0.0 Alpha")]
然后,您可以使用此方法提取屬性(我將其放在AssemblyInfo.cs文件中的靜態類中)。 方法獲取所有Assembly屬性的數組,然后選擇與屬性名稱匹配的第一個結果(並將其強制轉換為正確的類型)。 然后可以訪問InformationalVersion字符串。
//using System.Reflection;
//using System.Linq;
public static string AssemblyInformationalVersion
{
get
{
AssemblyInformationalVersionAttribute informationalVersion = (AssemblyInformationalVersionAttribute)
(AssemblyInformationalVersionAttribute.GetCustomAttributes(Assembly.GetExecutingAssembly())).Where(
at => at.GetType().Name == "AssemblyInformationalVersionAttribute").First();
return informationalVersion.InformationalVersion;
}
}
為了獲得我使用的正常“AssemblyVersion”屬性:
//using System.Reflection;
public static string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.