Assembly关键字在AssemblyInfo.cs中的含义是什么。 它允许在里面使用方法吗?

在AssemblyInfo.cs中看到了一些代码片段

[assembly: someattributename] 

这段代码是什么意思?

我甚至看到了一些在assembly中使用的方法,比如

 [assembly: log4net.Config.XmlConfigurator(Watch=true)] 

这是属性了吗?

属性始终应用于元素(例如方法,属性)。 “assembly:”前缀表示属性(使用’ * ‘省略的部分) 应用于程序集 。

在程序集级别应用属性如果要在程序集级别应用属性,请使用Assembly关键字。 以下代码显示在程序集级别应用的AssemblyNameAttribute。

 using System.Reflection; [assembly:AssemblyTitle("My Assembly")] 

应用此属性时,字符串“MyAssembly”将放置在文件的元数据部分的程序集清单中。 您可以使用MSIL反汇编程序(Ildasm.exe)或通过创建自定义程序来检索属性来查看属性。

它意味着这是程序集本身的属性,而不是特定的类,方法,属性等。

assembly:是所谓的属性目标 。 它指定该属性适用于程序集本身,而不适用于程序集中的任何类型。 其他一些属性目标是modulereturnparam

请参见“ 属性(C#和Visual Basic) ”。

这些是assembly属性,如此处所述。

例如,它们组成了程序集(或:可执行文件)的版本信息。

有关此程序集的常规信息是通过这组属性控制的。

此链接中显示了一个简单的解释

到答案的第二个(编辑过的)部分:

不,这不是方法调用。 log4net.Config.XmlConfigurator也是log4net定义的属性 。 (请参阅log4net详细信息的文档 。)它的确切声明是

 public class XmlConfiguratorAttribute : ConfiguratorAttribute 

在这种情况下,有点误导的是属性命名约定。 这意味着当您使用属性(甚至在程序集级别)时,您可以从属性类名称中保留Attribute后缀。