【发布时间】:2017-10-12 12:38:00
【问题描述】:
尝试使用 CryptoObfuscator 对 UWP (WinRT) AnyCPU 程序集进行模糊处理时,会观察到以下错误消息:
1.) 将 LogicNP.CryptoLicensing.WinRT.dll(WinRT 程序集)合并到 UWP DLL 中时:
混淆时发生错误:- 许可程序集 (Silverlight) 的 .Net 框架版本类型与混淆程序集的版本类型 (Normal) 不匹配。
2.) 当许可程序集的合并被忽略时:
混淆时发生错误:System.IO.FileNotFoundException - System.IO.FileNotFoundException:无法导致:System.Runtime,Version=4.0.20.0,Culture=neutral... 使用“搜索”指定此程序集所在的路径目录的
有没有人成功使用 CryptoObfuscator(它被宣传为适用于任何 .NET 程序集)?
【问题讨论】:
-
不确定这是否有帮助,但 UWP 不能在 AnyCPU 模式下运行。您必须明确选择 x86、x64 或 ARM。此外,UWP 使用 .NetNative。看看那个,看看你是否需要混淆。
-
感谢@Laith,我试图混淆的类库是 UWP 类库,并且被编译为任何 CPU。 exe没有被混淆。类库也是这样吗(不能是任何 CPU?)
-
CryptoObfuscator (which is advertised as working on any .NET assembly)=> 对于使用 UWP,Microsoft 建议使用 Dotfuscator。关于类库:我认为这是项目模板的问题。 @Laith 是正确的,一切都将被编译成 x86、x64 和 ARM。我不确定为什么项目模板会为通用类库创建Any CPU配置。 -
@Herdo 如果您打开 Visual Studio 2015 或 2017 项目,请转到 File -> New -> Universal Windows Class Library,然后右键单击该项目并转到 Build,您将看到 Platform Target默认选择“任何 CPU”。
-
遇到了同样的问题。找不到依赖程序集的解决方案是在 .NET 标准 2.0 上将以下内容添加到 csproj 文件中的属性组:
true
标签: c# uwp obfuscation crypto-obfuscator