clr相关内容

.NET 2.0 运行时上的 LINQ

支持 LINQ 的应用能否在仅安装了 .NET 2.0 运行时的机器上运行? 理论上,LINQ 只不过是语法糖,生成的 IL 代码应该与 .NET 2.0 中的代码看起来一样. 如何在不使用 .NET 3.5 库的情况下编写 LINQ?它会在 .NET 2.0 上运行吗? 解决方案 有一些“技巧"涉及使用 3.5 框架中的 System.Core.dll 使其与 .net 2. ..
发布时间:2021-11-26 09:53:16 C#/.NET

如何在运行时延迟绑定 32 位/64 位库

我遇到了一个类似于此处描述的问题,但略有不同.a>(加载程序集及其依赖项). 我有一个用于 3D 渲染的 C++ DLL,这是我们卖给客户的.对于 .NET 用户,我们将有一个 CLR 包装器围绕它.C++ DLL 可以在 32 位和 64 位版本中构建,但我认为这意味着我们需要有两个 CLR 包装器,因为 CLR 绑定到特定的 DLL? 现在假设我们的客户有一个 .NET 应用程序, ..
发布时间:2021-11-25 06:19:24 C#/.NET

在“任何 CPU".NET 程序集上强制 x86 CLR

在 .NET 中,“平台目标:任何 CPU"编译器选项允许 .NET 程序集在 x64 机器上以 64 位运行,在 x86 机器上以 32 位运行.还可以使用“平台目标:x86"编译器选项强制程序集在 x64 机器上作为 x86 运行. 是否可以运行带有“Any CPU"标志的程序集,但要确定它应该在 x86 还是 x64 CLR 中运行?通常这个决定是由 CLR/OS 加载器(根据我的理解 ..
发布时间:2021-11-25 05:10:44 C#/.NET

x64 上的 sizeof(int)?

当我在 C#.NET 项目中执行 sizeof(int) 时,我得到的返回值为 4.我将项目类型设置为 x64,那么为什么它说的是 4 而不是 8?这是因为我正在运行托管代码吗? 解决方案 有 各种 64-位数据模型;Microsoft 将 LP64 用于 .NET:两者长em>s 和指针是 64 位的(尽管 C 风格的指针只能在 C# 中的 unsafe 上下文中使用,或者作为 IntP ..
发布时间:2021-11-25 05:02:25 C#/.NET

.NET Core 中没有 AppDomains!为什么?

微软选择在 .NET Core 中不支持 AppDomains 是否有充分的理由? AppDomains 在构建长时间运行的服务器应用程序时特别有用,我们可能希望在不关闭服务器的情况下以一种优雅的方式更新服务器加载的程序集. 如果没有 AppDomains,我们将如何在长时间运行的服务器进程中替换我们的程序集? AppDomains 还为我们提供了一种隔离服务器代码不同部分的方法 ..
发布时间:2021-11-24 12:29:55 C#/.NET

已签名的 .net 程序集在加载时是否经过完全验证,以检查它们是否未被修改?

我曾经认为已签名和/或强命名的 .net 程序集在加载时由 CLR 验证,这意味着某人不可能编辑 IL 并且仍然拥有有效的程序集.然后我听了这个很棒的牧群代码播客Jon McCoy 说这并没有真正发生(在播客中大约 12:47) - 即任何人都可以编辑 IL 并弄乱您的程序集,而 CLR 不会关心.我知道这听起来很奇怪,但他似乎知道他在说什么,所以也许只是我不知道他指的是什么场景. 有人可以 ..
发布时间:2021-11-24 11:41:02 C#/.NET

MSSQL 2012 为 WCF 创建 CLR 触发器失败

我创建了使用 CLR 触发器连接到 WCF 服务器并通知它有关数据库更改的系统.它在 SQL Server 2008 R2 上运行正常.现在我正在尝试在 SQL Server 2012 上进行迁移.要使用 WCF,我需要加载 SMDiagnostics.dll 程序集以及其他程序集.我检查了 clr 在 db 中启用,并将 trustworthy 设置为“on",我禁用了 WCF 调试,我检查了 ..
发布时间:2021-11-24 11:36:41 C#

调用 Assembly.Load(byte[]) 可以引发 AppDomain.AssemblyResolve 事件吗?

假设我有一个 AppDomain.AssemblyResolve 事件,并在处理程序中构造一个字节数组并调用方法 Assembly.Load(字节[]).此方法本身是否会导致 AssemblyResolve 事件再次引发,并导致我的处理程序重新进入? 我的问题不仅限于可以使用 C# 编译器生成的程序集,它们还可以包含 CLR 支持的 abritrary 元数据和可执行代码. 我做了一些 ..
发布时间:2021-11-24 11:20:36 C#/.NET

为什么安装了 .NET 4 的机器不能运行针对 .NET 4.5 的 exe 而如果它们使用相同的 CLR 版本?

在 公共语言运行时(CLR) Microsoft 页面,它说 .Net Framework 4 和 4.5 都使用 CLR 版本 4. 但是在此页面中 (.NET Framework 版本和依赖项)它写道“.Net Framework 4.5 版包括 CLR 4 的更新版本" 还写道: '针对 .NET Framework 4.5.1 的可执行文件将被阻止在仅安装了 .NET F ..
发布时间:2021-11-24 11:10:44 C#/.NET

检索 JIT 输出

我有兴趣查看 C# 程序(不是 CLR 字节码指令)的实际 x86 程序集输出.有什么好的办法吗? 解决方案 您应该将 WinDbg 与 SOS/SOSEX 一起使用,确保您要查看 x86 代码的方法在方法表中进行了 JIT,然后使用 查看实际反汇编u 命令.这样你就会看到实际的代码. 正如这里其他人提到的,使用 ngen 您可以看到与实际 JIT 编译结果不完全匹配的代码.使用 V ..
发布时间:2021-11-24 11:10:04 C#/.NET

.NET 4.5:.NET 运行时中的内部错误 (80131506)/禁用并发 GC

我有一个长时间运行的 .NET 4.5 应用程序随机崩溃,并在事件日志的问题标题中留下了我提到的消息.该问题在 3 台不同的机器和 2 个不同的系统(2008 R2 和 2012)上重现.应用程序不使用任何不安全/非托管的组件,它是纯托管的 .NET,唯一非托管的是 CLR 本身. 这是我从转储中提取的崩溃站点的堆栈跟踪: clr.dll!MethodTable::GetCanonical ..
发布时间:2021-11-24 10:03:21 C#/.NET

GCHandle.FromIntPointer 没有按预期工作

这是一个非常简单(完整)的程序,用于练习 GCHandle.FromIntPointer 的使用: 使用系统;使用 System.Runtime.InteropServices;命名空间 GCHandleBugTest{课程计划{静态无效主(字符串 [] args){int[] arr = new int[10];GCHandle 句柄 = GCHandle.Alloc(arr, GCHandl ..
发布时间:2021-11-24 10:00:17 C#/.NET

.NET 4.5 会引入新版本的 CLR 吗?

在过去,并非每个新版本的 .NET 都带有新版本的 CLR.我知道 .NET 1.0、1.1、2.0 和 4.0 有,但 .NET 3.0 和 3.5 没有. .NET 4.5 会引入新的 CLR 吗?如何判断是否有新的 CLR? 解决方案 是的,.NET 4.5 有一个全新的 CLR 版本,您可以在以下位置阅读有关改进的信息; http://blogs.microsoft.c ..
发布时间:2021-11-24 09:13:04 C#/.NET

CLR 中的数组边界检查消除?

我最近在阅读 这篇文章 由 Dave Detlefs 撰写,他在其中介绍了一些 CLR 执行数组边界检查消除的案例.我决定自己测试一下,所以我做了以下事情: 打开 Visual Studio 2010 Ultimate SP1 创建了一个控制台应用程序类型的新 C# 项目(默认针对 .NET 4 Client Profile) 添加如下代码(所有子方法均直接取自文章): class ..
发布时间:2021-11-18 04:18:19 C#/.NET

C#中数组的神奇之处是什么

int[] a = new int[5];字符串[] b = 新字符串[1]; a 和 b 的类型都继承自抽象的System.Array,但是内置的没有真正的类库(好像有一些运行时类型,你找不到int[]的类型定义类).你能告诉我编译时会发生什么吗?以及为什么他们(c# 团队)做出这种设计(我的意思是为什么它不像 Array,而是使用具有编译器魔法的抽象类)? 解决方案 试图在 .NET ..
发布时间:2021-11-18 04:07:50 C#/.NET

沙盒 AppDomain 的 ApplicationBase 应该不同吗?

将从属沙盒域的 ApplicationBase 设置为与托管域相同的路径有什么确切的安全含义? 我发现 MSDN 指南指出 ApplicationBase 对于从属域应该不同“如果 ApplicationBase 设置相同,则部分信任应用程序可以让托管应用程序加载(作为完全信任)它定义的异常,因此利用它"(第 3 页): http://msdn.microsoft.com/en-us/ ..
发布时间:2021-11-16 19:15:04 C#/.NET