小编wis*_*lon的帖子

Resharper 8.1 Test Runner减慢Visual Studio文本编辑速度

我有一个相当小的C#解决方案,里面有大约5个项目.我正在使用Visual Studio 2012和Update 4,以及Resharper 8.1(build 8.1.23.546).这是一款带有SSD和16GB RAM的I7,拥有大量磁盘空间.这台机器的性能非常出色.

我已经将R#设置为我的单元测试运行器,并且我注意到,只要我运行任何单元测试(一个或多个,通过或失败,没有区别),Visual Studio文本编辑器几乎无法使用.键入编辑器窗口会遭受如此极端的延迟(击键之间最多1秒),这会完全打破开发流程.有时候我实际上不得不停止打字让键盘赶上来让我可以在Intellisense中查找一些内容.

问题一直存在,直到我关闭然后重新打开VS,此时一切都很好.直到我再次进行单元测试.然后又回来了.

我运行进程监视器,看看是否有任何东西(它没有),我已经尝试了各种各样的东西,如清理各种缓存,临时asp.net文件,重置设置,一切都没有效果,实际上基本上几乎所有在Google搜索结果中显示的选项都非常慢

然而,消除过程确实最终缩小了一切与Resharper,特别是测试运行员的问题.

然后我尝试了R#性能优化技巧,如此处所述- 加速Resharper的终极指南,唯一有效的(多次重启后)是禁用单元测试运行器.

我已经禁用了R#测试运行器,并恢复到内置的VS(我讨厌),问题立即消失了.一旦我重新启用R#测试运行器,问题就会出现.

有没有其他人遇到过这个问题,并找到了解决方案?

干杯:)

resharper vs-unit-testing-framework visual-studio-2012 visual-studio-test-runner resharper-8.1

10
推荐指数
1
解决办法
1214
查看次数

Akavache不会在应用重启之间保留缓存数据

我有一个Xamarin Android项目,使用共享的PCL库,我决定使用Akavache作为临时数据存储(存储一些简单的登录状态信息,以便每次都保存重新启动).

所以我将Akavache和Akavache.Sqlite3 nuget包添加到共享库(以及Xamarin.Android项目).我设置了BlobCache.ApplicationName,甚至调用EnsureInitialized(这似乎不仅仅是记录消息).

我将应用程序部署到了设备上.手动启动它(因此不会擦除数据和首选项等).只要应用程序正在运行,就会缓存(并检索)数据.如果缺少键,它会抛出异常(如预期的那样).一切都很完美.

然后我关闭了应用程序(在一个阶段我甚至重新启动了手机).当我重新启动它时,缓存是空的,或重新初始化.无论哪种方式,我缓存的一切都消失了.

我在调试器中查看了存储缓存sqlite3文件的位置,该应用程序告诉我他们显然是在 data/data/packagename/cache/xyzblobs.db.我看不到那些文件,因为它们位于内部系统缓存/应用程序文件目录中,因此我不知道它们是否被擦除.

我已经打开了WRITE_EXTERNAL_STORAGE(和READ_)权限.没有骰子.我已经尝试使用Secure,UserAccountLocalMachine目标.纳达.他们都没有工作.

只要应用程序正在运行(或在内存中),它就会按预期运行.应用消失的那一刻,缓存也是如此.

我唯一没做过的就是调用BlobStorage.Shutdown()方法.那是因为我不知道在哪里调用它.我有多个活动,不想被引用计数因为愚蠢.

编辑:后来我强行打电话.Shutdown().Wait(),这似乎也没有帮助.

还有其他人经历过这个吗?我知道至少有一个人遇到了完全相同的问题,详见Xamarin论坛.

我真的不想把所有的Akavache东西拉出来,因为我之前使用过它,在其他地方没有-Xamarin-Android,它真棒.否则我将不得不开始寻找某种xplat共享偏好管理器,我宁愿不这样做,因为Akavache应该做Just That.

编辑:这是一些代码:

初始化(我有一个静态共享的"AppGlobal"类,用于保存单例类型的东西)

public static class SharedAppGlobal
{
  static SharedAppGlobal()
  {
    BlobCache.ApplicationName = SharedAppConstants.SharedAkavacheCacheName;
    BlobCache.EnsureInitialized();
  }
}
Run Code Online (Sandbox Code Playgroud)

一切正常,如果我在调试器中启动并查看 BlobCache它告诉我我正在使用Sqlite3存储及其路径(在非root用户的情况下我无法访问sqlite3 .db文件)设备)

我可以通过类似的方式调用缓存获取/设置

currentCookie = await BlobCache.LocalMachine.GetObject<Cookie>("authCookie"); 然后用它们写回来

await BlobCache.LocalMachine.InsertObject("authCookie", cookie);

所有Akavache调用都在共享库中进行.我使用哪个商店(Secure,UserAccount或LocalMachine)并不重要,行为是一样的.

一切都很完美.然后我退出应用程序.重新打开应用程序(我可以重新启动手机以确保它已消失),并且缓存为空.或重置.或重新制作.我不知道是哪个,因为我看不到.db文件.

我不是在调试器下运行并且每次都重新部署.因此,部署目录不会被破坏.即使我安装了apk,也会发生这种情况.我认为它可能与那些不是它们所在的db文件有关,但我完全失去了.

我是否需要在特定于平台的级别实现某些功能并将其传递给共享库?我不这么认为,因为所有的依赖关系和路径似乎都得到了解决.

我浪费了几个小时.

谢谢 :)

android xamarin akavache

4
推荐指数
1
解决办法
3130
查看次数