.NET的一个好的混淆器工具有哪些选项可以支持.NET 4.0中的WPF?
特别是,哪些混淆工具处理WPF程序集中的BAML重写,并处理BAML中的跨程序集引用?
虽然大多数混淆器列出了"WPF"和".NET 3.5"或".NET 4"支持,但实际上,它们无法重写嵌入式BAML引用,导致使用WPF的跨程序集调用被不正确地处理.这可以防止它们在大规模WPF应用程序中使用.
据我所知,在XAML中完成的所有事情都可以在C#中完成.
为什么XAML是用BAML而不是C#编译的?在编译时解析XAML并创建相应的C#代码会不会更有效率?
任何人都可以推荐一个好的BAML反编译器/查看器,除了反射器的BAML Viewer插件,它不处理路径几何/数据?
'再次,
我的Dotfuscation工作继续进行!所以我目前正在研究一个由~38个程序集组成的合理复杂的WPF应用程序.现在我已经克服了我的性能问题(加速混淆过程),我现在开始测试Dotfuscator v4.10的BAML混淆功能.
麻烦的是,它不起作用 - 生成的错误(好的,警告)都是相同的形式,我可以在讨论的网上找不到任何内容:
BamlAnalysis flagged something in Data Binding Path: SOMEFIELDNAME in
SOMERESOURCEPATHTOBAML.baml for the following reasons:
Could not resolve, may have to manually exclude.
Run Code Online (Sandbox Code Playgroud)
有人遇到过这个并且有什么见解它希望我改变什么?
[编辑:]甚至设置手动排除其抱怨的属性不会删除警告......并且它看起来好像根本没有改变底层BAML(至少不是通过反射器的目视检查).
[EDIT2:]另外,应该声明Dotfuscator是一个要求,所以替代工具可能无法帮助我.
我正在WPF中开发一个小应用程序,我想本地化我的资源。我一直使用资源文件(.resx),但听说BAML可能会改变WPF应用程序中的本地化管理方式。
我进行了研究,发现了一种使用这些文件来翻译应用程序的方法。
我写了一篇博客文章来展示我是如何在这里做的(仅法语,对不起)。您可以在文章末尾看到有关英文链接的参考。
事实是,我真的不喜欢这种管理资源的方式。我认为这要复杂得多,我看不到使用此方法的优点。
我是对的还是对BAML有误解?
谢谢。
我试过ILSpy,但它失败了:
System.NotImplementedException: StaticResourceStart
? Ricciolo.StylesExplorer.MarkupReflection.XmlBamlReader.ProcessNext()
? Ricciolo.StylesExplorer.MarkupReflection.XmlBamlReader.ReadInternal()
? Ricciolo.StylesExplorer.MarkupReflection.XmlBamlReader.Read()
? System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
? System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
? System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
? ILSpy.BamlDecompiler.BamlResourceEntryNode.LoadIntoDocument(IAssemblyResolver resolver, AssemblyDefinition asm, Stream stream)
? ILSpy.BamlDecompiler.BamlResourceEntryNode.LoadBaml(AvalonEditTextOutput output)
? ILSpy.BamlDecompiler.BamlResourceEntryNode.<>c__DisplayClass3.<View>b__1()
Run Code Online (Sandbox Code Playgroud)
我为.Net Reflector尝试了Baml Viewer,但它无法生成有效的XAML.
主要问题是绑定引用错误的StaticResource.
例如(namedViews是CollectionViewSource):
Visibility="{Binding Path=Value, Converter={StaticResource namedViews}}"
ToolTip="{StaticResource namedViews}"
Run Code Online (Sandbox Code Playgroud)
还有哪些其他应用程序可以反编译BAML?BAML Viewer的任何补丁?
我的应用程序正在将一堆相同的用户控件加载到一个ScrollPanel.问题是,这很慢.
分析器显示该方法Application.LoadComponent()在我的用户控件的构造函数中由设计器代码内部调用,是瓶颈.该方法的文档说,此方法加载XAML文件.
问题是,我如何使用BAML而不是XAML?我怎样才能实现我的用户控件的XAML在从它创建新实例时不能一次又一次地解析?还有另一种方法可以更快地加载我的用户控件吗?
不确定这是否可行,但如果我有一个模板对象(传入OnApplyTemplate覆盖),有什么办法可以检查XAML的字符串表示形式吗?我在内部知道模板的XAML被编译后,它实际上转换为BAML,我知道当代码到达覆盖时,它既不是因为它已经被重新水化为实际对象,这就是我要问的原因.
实际上,如果你可以从模板对象转到XAML,理论上你不能从任何WPF对象转到它的XAML表示吗?然而,我只会满足于模板的前者.
这是.NET 4.0中的C#,而不是Silverlight FWIW.
中号
baml ×10
wpf ×10
xaml ×6
.net ×2
c# ×2
obfuscation ×2
.net-4.0 ×1
decompiling ×1
dotfuscator ×1
localization ×1
locbaml ×1
performance ×1
templates ×1