src/DotNetCommon.Core/Extensions/AssemblyExtensions.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace DotNetCommon.Extensions
{
    using DotNetCommon;
    using System;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Runtime.Versioning;

    /// <summary>
    /// <see cref="Assembly"/>扩展类
    /// </summary>
    public static class AssemblyExtensions
    {
        /// <summary>
        /// 获取程序集标记的 <c>.net</c> 版本
        /// </summary>
        /// <param name="assembly">The assembly</param>
        public static string GetFrameworkVersion(this Assembly assembly)
        {
            Ensure.NotNull(assembly, nameof(assembly));

            var targetFrameAttribute = assembly.GetCustomAttributes(true)
                .OfType<TargetFrameworkAttribute>().FirstOrDefault();

            if (targetFrameAttribute is null) { return ".NET 2, 3 or 3.5"; }

            return targetFrameAttribute.FrameworkName;
        }

        /// <summary>
        /// 获取程序集文件所在的目录 从 <seealso cref="Assembly.Location"/> 处获取
        /// </summary>
        public static DirectoryInfo GetAssemblyLocation(this Assembly assembly)
        {
            Ensure.NotNull(assembly, nameof(assembly));
            return new DirectoryInfo(Path.GetDirectoryName(assembly.Location) ?? throw new InvalidOperationException());
        }

        /// <summary>
        /// 获取程序集文件所在的目录 从 <seealso cref="Assembly.CodeBase"/> 处实现
        /// </summary>
        public static DirectoryInfo GetAssemblyCodeBase(this Assembly assembly)
        {
            Ensure.NotNull(assembly, nameof(assembly));

            var uri = new Uri(assembly.CodeBase);
            return new DirectoryInfo(Path.GetDirectoryName(uri.LocalPath));
        }

        /// <summary>
        /// 当前程序集是否以Release模式编译 参照 <see href="http://www.hanselman.com/blog/HowToProgrammaticallyDetectIfAnAssemblyIsCompiledInDebugOrReleaseMode.aspx"/>
        /// </summary>
        public static bool IsOptimized(this Assembly assembly)
        {
            Ensure.NotNull(assembly, nameof(assembly));

            var attributes = assembly.GetCustomAttributes(typeof(DebuggableAttribute), false);

后面还有 33 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。