我刚刚为我删除了一个大内存问题,我曾经在每个xaml文件中合并我们的"Themes"资源字典,而不是仅仅在app.cs.xaml中.
但是,在删除除App.cs.xaml之外的每个文件中的合并之后,我丢失了设计时样式/模板.
请注意:这仅适用于合并到我们的Themes.xaml中的样式(例如Color.xaml,Brushes.xaml - 我们为每种类型的样式都有一个).直接在Themes.xaml(我们没有..)中定义的东西有效.
我看到两个解决方案,
1)在XAML中注释掉合并,当我想使用设计时,只需取消注释.
2)在每个控件的默认控制器中都有这个:(也许只适用于Blend)
#if DEBUG
Resources.MergedDictionaries.Add(
new ResourceDictionary()
{
Source = new System.Uri(@"RD.xml")
}
);
#endif
Run Code Online (Sandbox Code Playgroud)
任何人都知道,必须有更好的方法来设计页面和控件的设计时间?
谢谢!
我有一个WPF应用程序,其中包括显示大量和小的图像.我的问题是该应用程序使用了大量内存,我无法弄清楚它来自何处.
情节,当强调应用程序时,我在perfmon中得到这个图:
http://www.imagechicken.com/uploads/1244548604007097000.jpg
黑色大行是Process\Private字节,其他行是CLR mem计数器(粉红色是总提交字节)
图中的数字是:
专用字节~350 Mb
承诺字节~100 Mb
我一直在使用WinDbg和其他工具进行大量挖掘,并且他们都报告托管堆栈的行为(!eeheap报告总托管堆栈大约100 Mb)
我一直在寻找像LeakDiag,LDGrapher这样的应用程序但却一无所获.
所以,最后我的问题是,如何继续寻找记忆的去向?
即使只是启动应用程序使用100Mb的承诺字节,但190Mb的私有字节.
参考文献:
我已经在很多网站上阅读了很多相关内容:
Tess Ferrandez:http://blogs.msdn.com/tess/archive/2009/02/27/net-memory-leak-reader-email-are-you-really-leaking-net-memory.aspx
Rico Mariani:http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx
MSDN mag:http://msdn.microsoft.com/en-us/magazine/cc163528.aspx
我一直在努力解决这个问题.我有一个使用大量内存的应用程序,真的会受益于LargeAddressAware.
问题简而言之:使用LAA-flag,应用程序将无法启动.
实验结果:
1)我有一个发布脚本,运行整个ClickOnce发布,然后重新签署可执行文件和dll,然后重新创建清单,签名等
2)运行脚本为我提供了一个安装和运行良好的应用程序
3)将其添加到后期构建中会破坏应用程序:
editbin /LARGEADDRESSAWARE <path>/obj/Publish/app.exe
Run Code Online (Sandbox Code Playgroud)
(是的,我知道,我们有一个名为Publish的构建配置- 白痴 - 但有效......)
我得到的错误信息是:
激活\ betabox\appbeta\app.application导致异常. 检测到以下失败消息:
+强名称签名对此程序集app.exe无效.
我的清单和exe都由有效的代码签名证书签名.当标志没有设置时,脚本工作正常.
我已经尝试过没有我的脚本,只有后期构建中的editbin命令并通过VS发布 - 同样的错误.
那么 - 通过ClickOnce发布LARGEADRESSAWARE设置的应用是否完全不可能?
谢谢!