我的环境 Windows 8 Pro 和安装了 WP 7.1.1 SDK 的 Visual Studio 2010 Ultimate。
我有一个带有 SQL CE 数据库的 WP 7.1.1 应用程序。有 2 个数据库,一个随初始包一起提供,另一个存储在独立存储中。在 Application_Launching 上,代码会比较两个数据库的版本,如果包中的版本更大,它会替换独立存储中的版本。在关闭模拟器的情况下首次运行应用程序时,应用程序可以正常启动并复制数据库以隔离存储。在第二次运行以下代码:
using (SportsDataContext db = new SportsDataContext(DBConnectionString))
{
var setting = db.Settings.Where(s => s.SettingID == (Int16)Settings.DatabaseVersion).SingleOrDefault();
if (setting == null)
return false;
newVersion = setting.Value;
}
抛出异常:
不允许访问数据库文件。[ 1981,文件名 = \Applications\Install\{GUID}\Install\{FileName}.sdf,SeCreateFile]
此外,让模拟器运行并卸载应用程序并重新运行它可以使其工作。
更新它在第一次运行时起作用的原因是因为上面的代码没有被执行(故意)。再次运行它会使上面的代码运行并轰炸。
这曾经在 Windows 7 和没有 VS 2012 的情况下正常工作。可能导致问题的原因是什么?
更新在使用新的 Windows 8 设置进行任何更改之前,我将所有更改都还原了回来,它按预期工作。一旦我使用服务器资源管理器使用 VS 2010 打开 sdf 文件并对其进行修改,我在调试应用程序时就会遇到同样的问题。诡异的!