clr相关内容

为什么装配.exe文件?

大会.NET Framework是,据我所知,中间语言文件+一些元数据,清单,也许别的东西。 CLR转换装配到机器code,其可以给定的本地机器上执行。 这意味着,组件不应该由CLR被处理之前是可由机器执行。如果是这样,那么为什么它有扩展名为.exe的,这是执行在Windows机器上? 解决方案 由于Windows需要创建一个进程和.exe会做的第一件事就是为主机CLR 加载 mscore ..
发布时间:2015-11-24 15:25:18 C#/.NET

是否.NET CLR JIT编译每个方法,每一次?

我知道,爪哇的HotSpot JIT有时会跳过的JIT编译一个方法,如果它期望编译开销比运行在帧间preTED模式的方法的开销更低。是否.NET CLR都基于类似的启发式工作? 解决方案 注:这个答案是“每运行”上下文。在code为每次运行该程序时,通常即时编译。使用 NGEN 或的。NET本地改变了这个故事,也... 与热点,CLR的JIT编译永远的完全的每一次运行。它从来没有跨$ P $ ..
发布时间:2015-11-24 15:19:27 C#/.NET

检索JIT输出

我很感兴趣,查看实际的x86汇编输出由C#程序(而不是CLR字节code指令)。有没有好的办法做到这一点? 解决方案 您应该使用WinDbg与SOS / SOSEX,确保你想看到86 $ C $下的即时编译的方法表,然后看看实际unassembly与方法U 命令。因此,你会看到实际的code。 正如其他人在这里提到的,与NGEN你可以看到code,是不是完全匹配的实际JIT编译的结果。与Vi ..
发布时间:2015-11-24 15:08:41 C#/.NET

是否有可能得到参数值在调用堆栈在.NET中的每一帧

我说的是管理的.NET code。 如果我们运行任何程序,并附VS它我们可以看到参数值在调用堆栈中每个方法。 我想创建一个记录解决方案,这将记录所有参数值在调用堆栈每个方法。其实我需要这个信息的情况下发生异常。 我知道这是可能的分析API。但我不知道是否有可能只用管理code? 更新:好吧,可能与纯.NET这是不可能的。然后,可能是某种非托管code ...重点是从内部应用程序本身做到这一点。 ..
发布时间:2015-11-24 15:04:10 C#/.NET

在通过的PInvoke传递管理byte []数组由Win32的填写,它需要被寄托?

假设你调用一个Win32函数,将填补在你的字节数组。创建大小为32,空数组。然后把它传递到Win32函数被填补INT,在你随后的管理code使用它。不存在的机会字节数组可能移动或覆盖在时间它被分配,它是填充在由Win32函数? 解决方案 简短的回答:不,钉扎没有必要在这种情况下 再回应: CLR将自动针引用管理对象的跨边界的PInvoke时。只要PInvoke的功能退出参考将取消固定。因此 ..
发布时间:2015-11-24 15:02:50 C#/.NET

有没有一种方法来检索一个C#应用程序的当前内存使用情况?

我自动化一些分析任务,并要记录的堆空间,并生成大小实时性。该分析API 看起来太过复杂,我需要的东西,它似乎对个人的分配监听和收藏,这是不是对我来说很重要。性能分析工具当然是一个很大的帮助,但我一直在寻找一个更灵活,可编程接口。 解决方案 术语“当前内存使用'是有点松散定义。你的意思是工作集?不管这意味着,你可以使用不同的属性,如 VirtualMemorySize ,工作集, Private ..
发布时间:2015-11-24 15:02:36 C#/.NET

为什么String.Concat不优化StringBuilder.Append?

OK,这样的常量字符串EX pressions级联由编译器优化成一个字符串。太好了。 现在有在运行时才知道字符串字符串连接,为什么编译器不会优化字符串连接的环路,并说10多串用的串联 StringBuilder.Append 代替?我的意思是,这是可能的,对不对?实例化一个的StringBuilder ,并采取每一个串联并把它变成一个追加()电话。 时有什么理由这样的应该或可以的不可以进行优化 ..
发布时间:2015-11-24 14:56:21 C#/.NET

为什么大对象堆和何必计较?

我看了一下世代和大对象堆。但我还是不明白有大对象堆有何意义(或利益)? 什么可能出了问题(在性能和内存方面)如果CLR会不过是仗着第2代(考虑到门槛Gen0和第一代小,以处理大对象)来存储大对象? 解决方案 一个没有垃圾收集刚刚摆脱未被引用的对象,它也的契约的堆。这是一个非常重要的优化。它不只是让内存的使用更有效率的(未使用的孔),它使CPU高速缓存更有效。缓存是现代处理器的真正的大交易,他 ..
发布时间:2015-11-24 14:47:36 C#/.NET

不支持在C#中的静态索引?

我一直想这几个不同的方式,但我达到了,它不能做的结论。这是我从过去的其他语言享有的语言功能。难道只是我应该只写了吗? 解决方案 没有,静态索引器不支持在C#。不像其他的答案,但是,我怎么看也很容易被点有他们。试想一下: 编码X =编码[28591] //相当于Encoding.GetEncoding(28591) 编码Y =编码[“富”]。 //相当于Encoding.GetEncoding ..
发布时间:2015-11-24 14:40:16 C#/.NET

解决从另一个文件夹集引用

我在开发的参考,并使用从某一个供应商的一些第三方组件的应用程序;在发展中我有这3个组件的参考文件夹在我的源代码树,我可以引用他们和构建应用程序,应用程序构建但不运行,因为整个服务器应用程序未安装,但这是好的。 在这里我想复制此自定义应用程序并运行所有程序集,我引用的文件夹类似服务器: D:\程序文件\ VendorName的\名称\支持\ API \ bin64适用 如果我复制我小的 ..
发布时间:2015-11-24 14:39:01 C#/.NET

为什么要保存在默认情况下,实习生池只包含文字字符串?

为什么默认只有文字字符串保存在实习生池? 从 MSDN 的例子: 字符串S1 =“MyTest的”; 。字符串s2 =新的StringBuilder()追加(“我”)追加(“测试”)的ToString()。 串S3 =的String.intern(S2); Console.WriteLine(“S1 = ='{0}'”,S1); Console.WriteLine(“S2 = ='{0}'”, ..
发布时间:2015-11-24 14:35:55 C#/.NET

类加载器在.NET中的等价

有谁知道这是否可以定义的“Java自定义类加载器”,在.NET中的等价? 给一点背景: 我在开发一种新的编程语言为目标的CLR,所谓的“自由”的过程。一的语言的功能是其界定“类型构造”,它们是被编译器编译时执行的方法和生成类型作为输出的能力。他们是那种仿制药的推广的(汉语是有正常的仿制药在里面),并允许code这样的写入(在“自由”的语法): 变种T作为元组<关于INT,J为INT,K ..

为什么要检查这个!= NULL?

有时候我想花一些时间在.NET code只是为了看看事情是如何在幕后执行。我偶然发现了这颗宝石,而在看 String.Equals 通过反射的方法。 C# [ReliabilityContract(Consistency.WillNotCorruptState,Cer.MayFail) 公众覆盖布尔等于(obj对象) { 字符串STRB = OBJ的字符串; 如果((STRB ..
发布时间:2015-11-24 14:14:02 C#/.NET

.NET 4.0和可怕的OnUser preferenceChanged航

我一直在困扰着可怕的OnUser preferenceChanged航认为年代由伊万Krivyakov,这里refered到相当不错: http://ikriv.com/en/prog/info/ DOTNET / MysteriousHang.html#BeginInvokeDance 我贴的问题而回,当我最初碰到的问题: 还有一个C#调试死锁问题 我以为我已经通过删除构建关闭UI线程控 ..
发布时间:2015-11-24 14:08:23 C#/.NET

如何检测在运行时.NET 4.5版目前正在运行的code?

我安装.NET 4.5开发preVIEW从然而,旧的方式来检测的.NET framework版本似乎回到4.0(更多$ P pcisely 4.0.30319.17020 $我的电脑),而不是4.5(确保可能的向后兼容性,还是?): 使用系统; 命名空间ConsoleApplication { 类节目 { 静态无效的主要(字串[] args) { ..
发布时间:2015-11-24 13:59:26 C#/.NET

实例的初始化字段与局部变量

我一直想知道为什么在下面的例子中它是确定的不可以初始化实例字段(依靠这将有它的默认值),并对其进行访问,而局部变量显然必须被初始化,即使我把它初始化为默认值,它会得到反正... 公共类识别TestClass { 私人布尔一个; 公共无效DO() { 布尔B: //这将解决这个问题:= FALSE; Console.WriteLine(一); ..
发布时间:2015-11-24 13:54:23 C#/.NET

当一个方法资格由CLR被内联?

我在应用中,往往隐含依赖于它们所包含的方法观察到了大量的“堆栈内省”code的没有的内联为他们的正确性。这种方法通常包括来电: MethodBase.GetCurrentMethod Assembly.GetCallingAssembly Assembly.GetExecutingAssembly 现在,我发现周围的这些方法中的信息是非常混乱。我听说在运行时不会内联调用GetCurrentMe ..
发布时间:2015-11-24 13:53:34 C#/.NET

为什么C#是不允许非成员函数像C ++

C#不允许写非成员函数和每个方法应该是类的一部分。我想这是所有CLI语言的限制。可是我错了,我发现,C ++ / CLI支持非成员函数。当它被编译,编译器将使方法,一些不愿透露姓名的类的成员。 下面是C ++ / CLI标准说, [注:非成员函数通过CLI视为一些不知名的类的成员;然而,在C ++ / CLI源$ C ​​$ C,这样的功能不能明确与类名合格。注完] 非成员函数中的元数据 ..
发布时间:2015-11-24 13:53:26 C#/.NET

托管CLR在Delphi中有/无JCL - 例如

有人可以请张贴在这里的一个例子如何承载CLR在Delphi?我看过类似 编辑:此文章关于Fox专业托管CLR 看起来很有希望,但我不知道如何从德尔福访问clrhost.dll。 编辑2:我放弃了对德尔福5的要求。现在,我想JCL用Delphi 7但同样,我无法找到任何的例子。这是我到现在: 我的C#assemply: 命名空间DelphiNET { 公共类NETAdder ..
发布时间:2015-11-24 13:50:05 C#/.NET

浮动VS双重性能

我做了一些时间测试,也读过一些文章像这怎么可能呢?当浮动不太precise和更小的相比,双精度值,如何能在CLR获得双打成相同的处理时间? 编辑: “的双打比在C 花车更快的精确副本“ 解决方案 在x86处理器,至少,浮动和双将每一个可以通过将FPU进行处理转换成一个10字节的真实。该FPU不具有独立的处理单元,它支持不同的浮点类型。 在古老的意见,浮动比更快的双进行100年前,当大 ..
发布时间:2015-11-24 13:49:17 C#/.NET