.net - 我怎么知道哪个运行时主机当前正在运行我的代码?

标签 .net clr clr-hosting

正如 Microsoft 文档声明的那样 Runtime Hosts .NET 有多个运行时主机来支持和执行我们的应用程序的代码,我的问题是我如何知道 Microsoft 运行时主机的哪些运行时主机正在托管我的代码。

我正在使用 C# 语言开发 dll 类库,该类库可由各种运行时主机使用和/或托管,因此我需要知道哪个运行时主机现在托管我的代码以满足指定条件。

最佳答案

实际上有一种非常简单的方法可以确定 CLR 的当前运行时版本。碰巧,Environment.Version如果您的代码由于 SxS(并排)执行而当前在不同的 CLR 中运行,则将返回不同的版本。

要了解在可以同时具有两个运行时的应用程序中的实际工作情况,请查看 this article on Demonstrating Side by Side execution .

if(Environment.Version.StartsWith("2.0"))
    System.Console.WriteLine("Inside .NET CLR 2.0");
else if(Environment.Version.StartsWith("4.0"))
    System.Console.WriteLine("Inside .NET CLR 4.0");
else
    System.Console.WriteLine("Unknown .NET version");

请注意,.NET 2.0 加载器将加载可用的 .NET 2.0 的最新 CLR,在大多数情况下将是 .NET 3.5。在一个进程中并排运行不同版本的 .NET 2.0 是不可能的。也不可能to run .NET 1.0 or .NET 1.1 side by side with .NET 2.0 in .NET 4.0 (虽然可以在 .NET 4.0 中并排运行 1.0 或 1.1)。

关于.net - 我怎么知道哪个运行时主机当前正在运行我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040204/

相关文章:

c++ - 使用 native 依赖项加载 clr 库

c# - 装箱/拆箱可空类型 - 为什么要执行此操作?

c# - 如何将 Image 对象与 C# .NET 进行比较?

c# - 在使用 Powershell.Invoke() 调用的 powershell 脚本执行中发生终止错误时如何避免 .NET exe 崩溃

c# - 我应该如何以合理的方式管理工具栏、菜单和上下文相关元素?

c# - 通过网络共享的 SQL CE

c# - 为什么 C# 在向上转换后将实例的先前非 null 成员视为 null?

.net - ProvideAssembly 可以从 CLR 主机加载 AppDomainManager 吗?

c# - 将 .NET 程序集引用解析为不同的名称?