C# ';汇编标题';NET框架中的属性

C# ';汇编标题';NET框架中的属性,c#,.net,attributes,.net-assembly,C#,.net,Attributes,.net Assembly,AssemblyTitle属性的实际用途是什么?MSDN表示它指定了程序集的描述,并且程序集标题是一个友好的名称,可以包含空格 Visual Studio在项目的“属性”窗口中请求程序集名称以及默认命名空间。有一个AssemblyName属性,但它完整地描述了程序集的唯一标识(即区域性等)。我看不出AssemblyTitle与AssemblyProduct有何不同 我使用IL反汇编程序查看Microsoft如何使用AssemblyTitle。我发现在mscorlib.dll中,AssemblyT

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

Visual Studio在项目的“属性”窗口中请求程序集名称以及默认命名空间。有一个
AssemblyName
属性,但它完整地描述了程序集的唯一标识(即区域性等)。我看不出
AssemblyTitle
AssemblyProduct
有何不同

我使用IL反汇编程序查看Microsoft如何使用
AssemblyTitle
。我发现在mscorlib.dll中,
AssemblyTitle
AssemblyProduct
AssemblyDefaultAlias
都设置为
“mscorlib.dll”


总之,我真正希望看到的是使用
AssemblyTitle

的实际示例您的产品可以由多个组件组成

所有组件将有一个单一的产品名称,各个组件将有自己的标题

AssemblyProduct=“MyProduct”

AssemblyTitle=“MyProduct.Utilities”

和另一个集会

AssemblyTitle=“MyProduct.Security”

程序集标题也用于资源管理器文件属性等
文件>属性>详细信息
选项卡

File Description = AssemblyTitle
Product name = AssemblyProduct

[AssemblyTitle]是一个非常重要的功能,当您右键单击程序集并使用Properties+Details时,可以直接看到它

一个使其更可见的示例。让我们从这个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框架中非常重要。它没有显示是一个主要的问题。您可以在XP中看到它,而不是在更高版本的Windows中。一个重要的考虑因素是使[AssemblyFileVersion]的值相同
  • 显示的“产品版本”与“文件版本”相同。这也不太好,您需要添加[AssemblyInformationalVersion]属性来解决这个问题

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

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


因此,如果我有一个单一的组装产品,我应该跳过它或给两个相同的值?给它值比跳过要好。如果单个组件本身就是一个产品,那么它们可以是相同的。通常情况下,即使是单组件产品(例如,产品名称='Johns Pizza')您的组件标题='Johns Pizza Web App'。。最后你也可以给他们取相同的名字。。不会有坏事发生;)您认为让AssemblyTitle与Properties->Application->assembly name中的程序集名称相同有意义吗?只有在您无法提供更好的描述时才有意义。当然可以。当右键单击可执行文件并选择属性时,AssemblyTitle也会显示为“说明”。当
AssemblyTitle
为空时,这会显示可执行文件的名称。或者,这可能只适用于它标识为“后台”的进程。不完全确定。