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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
