编译生成.NET Core Framework遇到的问题
前两天在Windows Server 2012上编译生成.NET Core Framework的代码库corefx,遭遇了几个问题,在这篇博文中记录一下。
编译生成操作方法是在命令行(Developer Command Prompt for VS2014)中运行corefx中的build.cmd命令。
(一)
遇到的第1个问题[#560]是:"Err445! Got unexpected exception: System.IO.IOException: There is not enough space on the disk."
问题发生在 System.IO.MemoryMappedFiles\tests\MemoryMappedFile\CreateViewAccessor.cs 的第378行:
using (MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile(
s_fileNameForLargeCapacity,
FileMode.Open,
"CVA_RunTestLargeCapacity",
capacity))
问题引发点:
// 2^31-1, 2^31, 2^31+1, 2^32-1, 2^32, 2^32+1
Int64[] capacities = { , , , , , }; foreach (Int64 capacity in capacities)
{
RunTestLargeCapacity(capacity);
}
出问题时,capacity的值是4294967296(4G)。
当时corefx代码库所在的硬盘分区剩余空间只有4.81G,后来将剩余空间增加至9.21G,问题消失。
(二)
遇到的第2个问题[#564]是:有时运行build.cmd之后,硬盘分区的卷标被修改为BCLTest。
经过分析源代码,发现问题的引发点在 System.IO.FileSystem.DriveInfo\tests\GetVolumeLabelTests.cs 的97行:
for (int i = ; i < drives.Length; i++)
{
if (originalVolumeInfo.ContainsKey(drives[i].Name))
{
try
{
drives[i].VolumeLabel = (String)originalVolumeInfo[drives[i].Name];
}
catch (UnauthorizedAccessException) { }
}
//...
}
GetVolumeLabelTests在测试过程中会修改硬盘分区的卷标,修改之后会恢复原来的卷标。但如果在恢复过程中出现UnauthorizeAccessException异常(比如当前硬盘分区正在某些文件操作不允许修改卷标),硬盘分区卷标就会变成BCLTest而回不去了。
该问题可以通过下面的代码进行重现:
//Scenario 3: We will revert to the original volume value and check
for (int i = ; i < drives.Length; i++)
{
if (originalVolumeInfo.ContainsKey(drives[i].Name))
{
try
{
drives[i].VolumeLabel = (String)originalVolumeInfo[drives[i].Name];
throw new UnauthorizedAccessException();
}
catch (UnauthorizedAccessException) { }
}
//...
}
(三)
遇到的第3个问题[#566]是运行Microsoft.Win32.Registry.Tests单元测试时出现“Error Key value is incorrect...”异常。
问题的引发点在 Microsoft.Win32.Registry\tests\RegistryKey\RegistryKey_GetValue_str_obj_regvalopt.cs:line 43:
try
{
Object obj = _rk1.GetValue(null, null, RegistryValueOptions.DoNotExpandEnvironmentNames);
if (obj != null)
{
Assert.False(true, "Error Key value is incorrect...");
}
}
当时obj的值是0。
在gitbuh上提交issue之后,根据 @stephentoub 的回复,找到了问题的原因,原来是注册表HKEY_CURRENT_USER中"(Default)"的值为0引起的。
删除该注册表项之后,Windows会自动创建空的"(Default)"。
之后,问题解决。
但是,后来过一段时间再看,HKEY_CURRENT_USER中"(Default)"的值又变为0,问题没有根本解决。
编译生成.NET Core Framework遇到的问题的更多相关文章
- Orchard Core Framework:ASP.NET Core 模块化,多租户框架
Orchard Core Framework:ASP.NET Core 模块化,多租户框架 上一篇编写Orchard Core一分钟搭建ASP.NET Core CMS ,介绍ASP.NET Core ...
- 扩展ADO.net实现对象化CRUD(.net core/framework)
扩展ADO.net实现对象化CRUD(.net core/framework) 安装nuget包:CRL using CRL; 实现数据操作 获取数据访问连接IDbConnection dbConne ...
- Orchard Core Framework Samples
解决方案包含内容 多租户应用 一个ASP.NET Core MVC应用程序,它引用模块项目,并为两个启用了不同模块的租户提供支持. 此Web应用程序的主页提供了更多信息,并链接到两个租户和模块端点.租 ...
- .Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索
公司项目最近出现获取访问域名.端口.IP错误现象,通过排查发现, 之前项目一直通过Nginx自定义Headers信息来获取,但最近运维人员失误操作造成自定义Header信息丢失,造成项目拿不到对应的数 ...
- .NET Core/Framework 创建委托以大幅度提高反射调用的性能
都知道反射伤性能,但不得不反射的时候又怎么办呢?当真的被问题逼迫的时候还是能找到解决办法的. 为反射得到的方法创建一个委托,此后调用此委托将能够提高近乎直接调用方法本身的性能.(当然 Emit 也能够 ...
- Jenkins 流水线远程部署 .NET Core/Framework 到 IIS
目录 Windows 安装 Git WebDeploy Windows 从节点 .NET Core 处理 IIS 处理项目 Jenkinsfile .NET Framework 安装环境 .NET F ...
- .NET Core与.NET Framework、Mono之间的关系
随着微软的.NET开源的推进,现在在.NET的实现上有了三个.NET Framework,Mono和.NET Core.经常被问起Mono的稳定性怎么样,后续Mono的前景如何,要回答这个问题就需要搞 ...
- Entity Framework Core系列之什么是Entity Framework Core
前言 Entity Framework Core (EF Core)是微软推荐的基于.NET Core framework的应用程序数据访问技术.它是轻量级,可扩展并且支持跨平台开发.EF Core是 ...
- ASP.NET Core 基础知识(一) ASP.NET Core是什么?与.NET Framework、Mono之间的关系 ?
一.概念: ASP.NET Core 是一个开源的.跨平台的 .NET 实现.而 .NET Framework 是基于 Windows 的 .NET 实现,Mono 是 .NET Framework ...
随机推荐
- 离线安装VS 2013开发工具的方法!
目前微软已正式发布了VS 2013的开发工具,但安装VS 2013开发工具前必须安装或升级到IE10,否则无法进行安装.本文主要介绍在Windows Server 2008 R2 SP1下离线安装IE ...
- php文章内容分页并生成相应的htm静态页面代码
代码如下: <?php $url='test.php?1=1'; $contents="fjka;fjsa;#page#批量生成分成文件并且加上分页代码"; $ptext = ...
- JQuery中ajax请求写法
$.ajax({ type: "POST", url: "ygdwController.do?getonygdw", data : "id=" ...
- win7如何配置access数据源
今天想做个管理系统,需要用到数据库,还要设置数据源,可是当我打开控制面板的管理工具的数据源发现只有SQL驱动,找不到access,因为我是用acess做的啊,所以就很郁闷,不过看到了一个方法,好吧,我 ...
- Ubuntu12.04-x64编译Hadoop2.2.0和安装Hadoop2.2.0集群
本文Blog地址:http://www.cnblogs.com/fesh/p/3766656.html 本文对Hadoop-2.2.0源码进行重新编译(64位操作系统下不重新编译会有版本问题) ...
- Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK fla
转载于 http://blog.csdn.net/wike163/article/details/6678073 从一个Activity中要通过intent调出另一个Activity的话,需 ...
- NGUI 便捷的显示与隐藏界面
所有的UI都继承自class UIBase,可以把UI做成预设体,同个场景下,读取预设体时,将子UI对象都保存在类似Dictionary<UIType, UIBase>这样的结构中,这样的 ...
- PLSQL数据导入导出问题解决(空表、大字段表、表空间错误等)
PLSQL使用方法简单,平常使用较多,但在平常使用过程中,遇到一些问题,下面简单罗列并进行解决.这些解决方法大多通过网络查找获得,这里只是进行简单整理. 使用的数据库版本为:Oracle11g. 通用 ...
- 按enter执行click或者搜索问题
最近需要将按按钮搜索的功能,改为支持按enter回车键,搜索. 实现按enter,执行click事件还是比较简单的. //按回车搜索用户 $(window).keydown(function (eve ...
- EasyUI 后台接受DataGrid传来的参数
string ad = Context.Request.QueryString["rows"];不行 string aedf = Context.Request.Form[&quo ...