簡體   English   中英

如何使C#.NET CF程序的AssemblyInfo版本傳播到Explorer Properties窗口?

[英]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中是否有特殊設置才能實現此目的?

示例圖片http://content.screencast.com/users/Pincas/folders/Jing/media/40442efd-6d74-4d8a-8e77-c1e725e6c150/2008-09-24_0849.png

編輯:我應該提到,這是特別適用於.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM