【问题标题】:Where to find the assembly configuration information?在哪里可以找到程序集配置信息?
【发布时间】:2011-04-19 16:34:21
【问题描述】:

在 AssemblyInfo.cs 文件中,我有以下小节:

#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif

组装完成后在哪里可以看到这些信息?由于文件详细信息中没有任何内容:

在哪里可以找到它?

问候

【问题讨论】:

    标签: .net .net-assembly assemblyinfo


    【解决方案1】:

    您可以使用反射来获取此信息。我相信它会像下面这样。

    Assembly assembly = Assembly.GetExecutingAssembly();
    object[] attributes = assembly.GetCustomAttributes(true);
    var config = attributes.OfType<AssemblyConfigurationAttribute>().FirstOrDefault();
    if (config != null) {
            Debug.WriteLine(config.Configuration);
    }
    

    进一步考虑这是你的意图吗?

    How to check if an assembly was built using Debug or Release configuration?

    从顶部答案链接的博文显示了确定程序集是否可调试的更好方法:http://stevesmithblog.com/blog/determine-whether-an-assembly-was-compiled-in-debug-mode/

    一个答案表明,如果您使用 AssemblyDescription 属性有条件地在文本中包含 Release/Debug,您可以在 Windows 资源管理器中获得该信息。

    【讨论】:

    • 第三行我将替换为var config = attributes.OfType&lt;AssemblyConfigurationAttribute&gt;().FirstOrDefault();。那么你就不需要演员表了,恕我直言,它看起来更干净了。
    【解决方案2】:

    您可以使用 ILDASM.exe 查看已编译的程序集。有关使用 ILDASM.exe 的信息,请参阅 http://msdn.microsoft.com/en-us/library/ceats605.aspx

    或者你可以使用反射通过代码来查看它,例如 System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttributes()

    【讨论】:

      【解决方案3】:

      Windows 资源管理器属性表从 win32 VERSIONINFO 资源中提取该信息。许多程序集属性可以是mapped to win32 resource fields(并将由构建设置),但AssemblyConfiguration 属性可能不是其中之一。

      如果您想查看所有程序集属性,包括那些未设置 win32 资源字段的程序集,.NET Reflector 是一种选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        • 2017-06-12
        • 2018-05-06
        • 2010-11-02
        • 2011-09-24
        • 1970-01-01
        • 2016-09-19
        相关资源
        最近更新 更多