我们大量使用 Microsoft Device Emulator 来开发和测试我们的移动应用程序(VS 2008 SP1、.NET CF 2.0 和 3.5,模拟器版本 9.0.21022.8)。我们的项目从映射到开发机器的本地文件夹的模拟存储卡开始。这样我们就可以非常快速地部署、测试和调试更改,并且不受可用内部存储空间的限制。
可悲的是,存储卡驱动程序在访问大量文件时似乎非常不稳定,在访问位于共享文件夹上的资源时会抛出随机FileNotFoundException
s 和s。UnauthorizedAccessException
以下演示代码将使用不同的值i
(从 8 到 > 100)随机崩溃UnauthorizedAccessException
。在内部存储上创建文件时,代码不会崩溃。
private const string PATH = @"\Storage Card\Temp\";
private void button1_Click(object sender, EventArgs e)
{
if (!Directory.Exists(PATH))
{
Directory.CreateDirectory(PATH);
}
for (int i = 0; i < 1000; i++)
{
using (var stream = File.Create(Path.Combine(PATH, string.Concat(i, ".tmp"))))
{
}
}
}
例子:
我详尽地搜索了网络,发现有些人正在为同样的问题而苦苦挣扎,但没有找到任何解决方案。
我已经尝试过的:
- 使用 FAT32 格式的卷进行共享
- 以管理员身份执行所有程序
- 大幅减少共享文件夹中的文件数量
- 使用了 RAM 磁盘驱动程序进行测试(效果很好,但不能直接从开发机器访问)
- 将模拟设备的 RAM 增加到 256 MB
- 测试了所有可用的不同模拟器图像(不会改变任何东西)
- 冷启动或热启动模拟器设备
我的问题是:
- Microsoft Device Emulator 上的共享文件夹是否有任何替代方法?
- 有没有办法修复内置机制的行为(例如注册表设置)?
- 是否可以在模拟设备上安装另一个驱动程序来解决此问题?