【问题标题】:'AssemblyTitle' attribute in the .NET Framework.NET Framework 中的“AssemblyTitle”属性
【发布时间】:2014-06-02 10:00:55
【问题描述】:

AssemblyTitle 属性的实际用途是什么? MSDN 说它指定了程序集的描述,并且程序集标题是可以包含空格的友好名称。

Visual Studio 在项目的属性窗口中询问程序集名称以及默认命名空间。有一个AssemblyName 属性,但它完整地描述了程序集的唯一身份(即文化等)。我看不出AssemblyTitleAssemblyProduct 有何不同。

我使用 IL Disassembler 来了解 Microsoft 如何使用 AssemblyTitle。我发现在 mscorlib.dll 中,AssemblyTitleAssemblyProductAssemblyDefaultAlias 都设置为 "mscorlib.dll"

最后,我真正希望看到的是使用AssemblyTitle 的实际示例。

【问题讨论】:

    标签: c# .net attributes .net-assembly


    【解决方案1】:

    您的产品可以包含多个程序集。

    所有的程序集都将有一个单一的产品名称,各个程序集将有自己的标题。

    AssemblyProduct = "MyProduct"

    AssemblyTitle = "MyProduct.Utilities"

    对于另一个程序集

    AssemblyTitle = "MyProduct.Security"

    程序集标题也用于资源管理器文件属性等。File > Properties > Details 选项卡

    File Description = AssemblyTitle
    Product name = AssemblyProduct
    

    【讨论】:

    • 那么,如果我有一个单一组件的产品,我应该跳过它还是给这两个相同的值?
    • 给它值比跳过更好。如果您的单个组件本身就是一个产品,它们可以是相同的。通常即使对于单个组装产品(例如产品名称 = 'Johns Pizza'),您的组装标题 = “Johns Pizza Web App”.. 最后你也可以将它们命名为相同的.. 不会发生任何不好的事情;)
    【解决方案2】:

    [AssemblyTitle] 是一个很大的问题,当您右键单击程序集并使用属性 + 详细信息时,它是直接可见的。

    一个让它更明显的例子。让我们从这个 AssemblyInfo.cs 文件开始:

    [assembly: AssemblyTitle("AssemblyTitle")]
    [assembly: AssemblyDescription("AssemblyDescription")]
    [assembly: AssemblyConfiguration("AssemblyConfiguration")]
    [assembly: AssemblyCompany("AssemblyCompany")]
    [assembly: AssemblyProduct("AssemblyProduct")]
    [assembly: AssemblyCopyright("AssemblyCopyright")]
    [assembly: AssemblyTrademark("AssemblyTrademark")]
    [assembly: AssemblyCulture("")]
    [assembly: Guid("7da36bdf-39fb-4a4d-b98c-ecefd99b155a")]
    [assembly: AssemblyVersion("1.2.3.4")]
    [assembly: AssemblyFileVersion("5.6.7.8")]
    

    并查看文件的属性:

    对此的一些注释:

    • 请注意 [AssemblyDescription] 的误导性,它实际上是您在属性表中看到的标题。
    • 不显示描述、配置和公司。您可能希望将公司名称合并到可见的版权中。描述和公司实际上存在于非托管版本资源中,但 Windows 只是不显示它。
    • [AssemblyCulture] 比较特殊,被卫星程序集用于本地化
    • [Guid] 很特殊,如果您创建 [ComVisible] 程序集,它会设置类型库 guid
    • [AssemblyVersion] 非常特别,在 .NET Framework 中非常重要。它没有显示是一个主要的挂断。您可以在 XP 中看到它,而不是在更高版本的 Windows 中。一个重要的考虑是使 [AssemblyFileVersion] 的值相同。
    • 显示的“产品版本”与“文件版本”相同。这也不是很好,您想添加 [AssemblyInformationalVersion] 属性来解决这个问题。

    奇怪的是,Windows 组和 DevDiv 并不总是能很好地协同工作。

    【讨论】:

    • 您认为将 AssemblyTitle 与 Properties->Application->Assembly name 中的程序集名称相同是否有意义?
    • 仅当您无法提出更好的描述时。当然可以。
    【解决方案3】:

    AssemblyTitle 也作为应用程序的名称出现在任务管理器 (Windows 10) 中,例如在“进程”选项卡或“更少的详细信息”视图中。

    【讨论】:

    • 看来AssemblyTitle为空时,显示的是可执行文件名。或者也许这仅适用于它标识为“背景”的进程。不完全确定。
    猜你喜欢
    • 1970-01-01
    • 2017-10-04
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多