在我的程序中,如何读取AssemblyInfo.cs中设置的属性:
[assembly: AssemblyTitle("My Product")]
[assembly: AssemblyDescription("...")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Radeldudel inc.")]
[assembly: AssemblyProduct("My Product")]
[assembly: AssemblyCopyright("Copyright @ me 2008")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
我想向我的程序的用户显示其中的一些值,所以我想知道如何从主程序和我正在使用的组件程序集加载它们。
8条答案
按热度按时间zzoitvuj1#
这相当简单。你必须使用反射。你需要一个Assembly的示例来表示你想要读取的具有属性的程序集。一个简单的方法是:
然后您可以执行以下操作,例如:
现在,引用
attribute.Product
将为您提供在AssemblyInfo.cs中传递给属性的值。当然,如果您查找的属性可以出现多次,则可能会在GetCustomAttributes返回的数组中获得多个示例,但对于您希望检索的程序集级别属性来说,这通常不是问题。mrzz3bfm2#
我创建了这个使用Linq的扩展方法:
然后你就可以像这样方便地使用它:
r7knjye23#
好吧,也许现在有点过时的原始问题,但我会提出这一点,以供未来参考无论如何。
如果要从组件本身内部执行此操作,请使用以下命令:
然后,您可以遍历所有自定义属性以找到您需要的属性,例如:
li9yvcax4#
好吧,我尝试了很多资源来寻找一种方法来提取
Assembly.LoadFrom(path)
的.dll属性。但不幸的是,我找不到任何好的资源。而这个问题是c# get assembly attributes
上搜索结果最多的(至少对我来说),所以我想到分享我的工作。我写了下面这个简单的控制台程序来检索经过几个小时的努力后的一般汇编属性。这里我提供了代码,所以任何人都可以使用它来做进一步的参考工作。
为此我使用了
CustomAttributes
属性。欢迎对这种方法发表评论代码:
样本输出:
yjghlzjz5#
我个人非常喜欢lance Larsen and his static AssemblyInfo class的实现。
基本上就是将类粘贴到程序集中(我通常使用已经存在的AssemblyInfo.cs文件,因为它符合命名约定)
要粘贴的代码为:
使用System添加;到文件的顶部,你就可以开始了
对于我的应用程序,我使用这个类来设置/获取/使用我的本地用户设置:
看看拉森斯的网站(MVP),他有很酷的东西来获得灵感。
0mkxixxg6#
我用这个:
供参考:
9wbgstp77#
如果您知道您要查找的属性是唯一的,那么使用
Attribute
类的这个经常被忽略的静态helper方法会容易得多:这样做比较容易,因为你不需要去处理数组,也不需要担心那个讨厌的
inherit
参数,你只需要直接得到一个属性值,或者null
(如果不存在的话)。yrefmtwq8#
这是在一行代码中检索特定属性的好方法。不需要特殊的类。