gpt4 book ai didi

c# - 获取 CLR ID

转载 作者:太空狗 更新时间:2023-10-29 19:41:30 24 4
gpt4 key购买 nike

有没有什么地方可以在运行时获取当前应用程序的 CLR ID?我正在使用性能监视器监视我的系统,实例使用的名称是:

ApplicationName.exe_p4952_r15_ad1

我可以通过编程方式获取所有其他参数,但不能获取 r15,它是执行代码的公共(public)语言运行时(实例)的运行时 ID。我注意到它总是 15,但最好动态获取它以避免并发症。

最佳答案

您可以获得整个“后缀”,即 Application.exe 之后的部分,使用与 .NET 框架相同的基础结构(例如性能计数器)。

有方法 System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName ,它可以做到这一点。请注意,该方法被描述为“基础结构”和“此 API 支持 .NET Framework 基础结构,不打算直接从您的代码中使用。”,但仍然是公开的。我认为没有任何“更好的支持”方式来获取您想要的信息。至少它对 future 的变化更加健壮和有弹性,然后根据文档对信息进行逆向工程。

string suffix = System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName("",                         
System.Runtime.Versioning.ResourceScope.Machine,
System.Runtime.Versioning.ResourceScope.AppDomain));

例如,这将返回 _p4472_r16_ad1

当然,你也可以直接传递性能计数器的basename,直接得到全名。上面空字符串的使用只是为了获得“后缀”的一种技巧。

string str = VersioningHelper.MakeVersionSafeName("Application.exe",
ResourceScope.Machine, ResourceScope.AppDomain);

// str -> "Application.exe_p4472_r16_ad1".

VersioningHelpers 类也有私有(private)方法 GetRuntimeId(),但考虑到以上情况,我认为没有必要在实现你的目标时使用反射需要。

关于c# - 获取 CLR ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com