我在哪里可以获得有关.NET对象模型的内存布局信息的信息?

我想知道.NET构造的内存表示,例如“ interface ”,“ class ”,“ struct ”等。有一本很好的C ++对象模型书 – Stanley的<C ++对象模型内部 >。 Lippman,我想要一本类似于.NET和C#的书。 我已经阅读了一些关于.NET的书籍,但它们主要是关于.NET的逻辑用法。 他们都没有谈到物理内存布局信息。 我认为有必要至少知道.NET的一个实现。 我已经阅读过“ 钻入.NET Framework内部以了解CLR如何创建运行时对象 ”有人可以提供一些关于更深入的书籍和文章的提示吗? 如果此信息不公开。 可以选择Mono或Shared Source CLI等共享源。 非常感谢。

如何在C#中打开Windows 7事务处理文件

据我所知,Windows 7支持事务处理文件。 我如何在C#中使用它们?

使用LINQ to SQL读取巨大的表:耗尽内存与慢速分页

我有一个庞大的表,我需要阅读某个订单并计算一些汇总统计数据。 该表已经有正确顺序的聚集索引,因此获取记录本身非常快。 我正在尝试使用LINQ to SQL来简化我需要编写的代码。 问题是我不想将所有对象加载到内存中,因为DataContext似乎保留它们 – 但是尝试分页它们会导致可怕的性能问题。 这是故障。 最初的尝试是这样的: var logs = (from record in dataContext.someTable where [index is appropriate] select record); foreach( linqEntity l in logs ) { // Do stuff with data from l } 这非常快,并且流速很好,但问题是应用程序的内存使用量不断上升。 我的猜测是LINQ to SQL实体被保留在内存中而没有正确处理。 因此, 在创建了大量对象C#时读取内存不足后,我尝试了以下方法。 这似乎是许多人使用的常见Skip / Take范例,具有节省内存的附加function。 请注意,事先创建了_conn ,并为每个查询创建临时数据上下文,从而导致关联的实体被垃圾回收。 int skipAmount = 0; bool finished […]

如何使SqlDataReader.ReadAsync()异步运行?

当调用SQL Server实际执行需要花费时间的事情时, SqlDataReader.ReadAsync()为我同步运行。 有没有办法强制它以异步方式运行,或者是我在Task.Run()调用它的唯一选择? 这是一个复制品。 它使用winforms来certificate该调用阻止了GUI线程。 请注意,T-SQL必须实际执行某些操作 – 使用WAITFOR DELAY ’00:00:20’无法重现 。 using System; using System.Configuration; using System.Data.Common; using System.Data.SqlClient; using System.Threading.Tasks; using System.Windows.Forms; static class SqlDataReaderReadAsyncProgram { static async void Form_Shown(object sender, EventArgs e) { var form = (Form)sender; // Declare your connection string in app.config like // using (DbConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString)) […]

在C#中将像素转换为英寸,反之亦然

我希望将像素转换为英寸,反之亦然。 我知道我需要DPI,但我不知道如何获取这些信息(例如我没有Graphics对象,所以这不是一个选项)。 有办法吗?

运算符’=>’在C#中意味着什么?

这句话中的’=>表示什么? del = new SomeDelegate(() => SomeAction()); 以上声明是否与此相同? del = new SomeDelegate(this.SomeAction); 谢谢。

我可以使用reflection来查找ASP.NET中的bin / 文件夹而不是asp临时文件夹

我有一个ASP.NET网站,我想找到/ bin / [Configuration]文件夹使用外部工具(exe文件)。 当我使用reflection来获取调用程序集位置时,它返回类似于: C:\Windows\Microsoft.NET\Framework\\…\Temporary ASP.NET Files\a1388a5e\\…\my.dll 由于每个dll在临时ASP.NET文件下都有自己的目录,因此对我来说失败了。 如何获取已编译的二进制文件夹的位置,其中dll和.exe是(即bin /)而不是asp.net的临时缓存? 笔记 此代码位于支持库中,可以从ASP.NET网站或其他控制台/ Windows应用程序调用。

动态LINQ:在新子句中指定类名

使用Dynamic LINQ,需要对给定类的字段进行哪些更改? 例如,如何在DLinq中重现以下C#查询: var carsPartial = cars.Select(c => new {c.year, c.name, make = new maker() {name = c.make.name} }).ToList(); 我已应用此答案https://stackoverflow.com/a/1468357/288747中提到的更改,以允许返回类型为调用类型而不是匿名类型。 类定义如下(如果有帮助): class car { public int vid; public int odo; public int year; public string name; public maker make; } class maker { public string name; public int firstYear; } 以下不起作用(但我认为很接近,但仍然不起作用,因为我没有动态linq库所需的更改,这是我需要的): var carsPartial = cars.Select(“new(name, […]

在解决方案中获取类库项目中的连接字符串

在我的.net 4解决方案中,我有两个不同的项目 – 一个Web应用程序项目和一个类库项目。 在Web应用程序项目中,数据库连接字符串位于web.config文件中。 我想从类库项目中访问该连接字符串。 可能吗? 如果有,怎么样? 如果有更好的方法来获取连接字符串,请告诉我。

MVC Bundling – 包含单个bundle的.min文件

我的应用程序中有一个文件,我只有一个缩小版本,我想为它创建一个包: bundles.Add(new ScriptBundle(“~/bundles/maskedinput”).Include( “~/Scripts/jquery.maskedinput-1.3.min.js”)); 问题是默认情况下在调试模式下,捆绑机制会忽略.min文件。 我不想为所有捆绑包关闭此规则,但我想为此单个捆绑包禁用它。 这可能吗?