0

我正在使用 Dotfuscator Pro 4.10 混淆使用 VS 2012 构建的应用程序。.NET 代码包含托管和非托管 C++/CLI 代码,因此使用 /clr 编译。

我的解决方案包含很多项目。我只允许重命名为混淆。此外,由于所有程序集/应用程序都在 dotfuscator 项目中,我不在库模式下运行。因此,所有接口都被加扰。

当我混淆程序集时,一切正常,但对于程序集(我们称之为A.dll)。如果我禁用A.dll的混淆,则应用程序可以完美运行。如果我为A.dll启用混淆,我会得到:

错误:System.Resources.MissingManifestResourceException

消息:找不到适合指定文化或中性文化的任何资源。确保“ ahe.resources ”在编译时被正确嵌入或链接到程序集“ A.dll ”中,或者所需的附属程序集是可加载和完全签名的。

aheA.dll中窗口窗体的打乱名称,此处抛出异常(来自ApplyResources()):

void InitializeComponent( void )
{
    this->components = (gcnew System::ComponentModel::Container());
    System::ComponentModel::ComponentResourceManager^resources = (gcnew System::ComponentModel::ComponentResourceManager( A::typeid ));

    // ...

    resources->ApplyResources( this->mpMyControl, L"mpMyControl" ); // Exception thrown here.

    // ...
}

资源在A.resx中正确定义(并且在混淆之前工作)。

请注意,这种代码在其他程序集中的许多地方都使用过,当我禁止对有问题的程序集A.dll进行混淆时,它可以完美运行。

那么,有人知道如何解决这个问题吗?随意询问更多信息/细节,我不知道什么可能重要或不重要。

谢谢!

编辑 1:没有任何程序集签名。

4

2 回答 2

0

检查 .vcxproj 文件中的根命名空间是否正确:

<RootNamespace>YourNameSpace</RootNamespace>
于 2013-09-16T23:25:03.740 回答
-1

一位Scotthttp://www.pcreview.co.uk/forums/dotfuscator-vs-resourcemanager-ctor-t3403701.html报告说 ,这个问题在 Dotfuscator 的知识库中得到了解决,该知识库仅供注册用户使用社区版在这里: http: //www.preemptive.com/support/dotfuscator/KnowledgeBase/CommunityEdition.html

于 2014-02-19T17:28:18.383 回答