我正在试图通过不同的混淆选项,为了做到这一点,我首先尝试使用Crypto。
以下是我遵循的步骤:
完成了向导,我看到的是有一些Dll很好地混淆但是我的项目现在没有建立。我注意到的两件事是我的文件夹中有这个奇怪的.OBPROJ文件,它负责删除我以前的所有旧程序集,然后再对它们进行模糊处理。
我看到我的18个未能构建的项目中有4个出现以下错误:
System.IO.FileNotFoundException: File 'C:\Dropbox\CPTFramework_old\CommonLib\obj\Debug\CommonLib.dll' not found.
所有失败的4个项目都非常相似。现在,我不确定它对OBj / Debug文件夹中的dll文件做了什么,但文件绝对不存在。
我注意到的另一件事是,所有项目,当单独构建时,确实构建良好。所以我的解决方案文件肯定出现了问题。但我无法找出究竟发生了什么变化。
答案 0 :(得分:3)
我最近也遇到过同样的问题,虽然已经过时,但其他任何人都可以找到答案。
它与您的构建顺序有关。我发现VS中的构建顺序并不总是与实际的构建顺序相对应。我建议在构建失败后查看输出窗口,看看哪些项目是第一个和最后一个(你需要这些项目来配置加密)。显然,不要忘记忽略任何设置项目或项目未在发布模式下构建的项目。
所需要的只是使用正确的第一个和最后一个项目重新配置加密,重新加载您的解决方案并构建它。
答案 1 :(得分:3)
有类似的问题。经过多次努力,找到了解决方案。
在多核处理器中,VS将并行运行构建,这使得Cyrpto混淆器在最后一个项目构建完成之前运行。
在VS 2013中将最大并行项目构建数量设为1 将解决此问题。
TOOLS - 选项.. - 构建并运行
答案 2 :(得分:1)
基本上,错误发生在
1:您曾经指定一个项目是第一个或最后一个,并且在您的解决方案中,这不是或不再是这种情况。 2:你有一个像Newtonsoft.Json那样的依赖
案例1: 在“as previous startup specified”项目中添加依赖项时,我碰巧遇到了同样的问题。我再次运行向导然后将2个项目标记为第一个......
还会发生在几个项目中使用相同的共享dll,其中一个是第一个,另一个是第一个,然后根据编译的内容开始手动更新项目。
理想情况下,不需要设置第一个或最后一个,因为构建顺序已经在解决方案中,但我不在LogicNP工作......
要解决问题,请查看文件在VS的输出中抱怨,因为那是可能具有错误“第一”标志的文件。
然后右键单击项目并从弹出窗口中选择“卸载项目”。再次右键单击卸载的项目,然后选择编辑;或者在文本编辑器中打开.csproj文件。
滚动到文件底部,查找看起来像这样的文字...... 假 假 发布| AnyCPU .. \ CATS.Settings_Release_AnyCPU.obproj
查看CO_FirstProject和CO_LastProject标记,并确保它们具有正确的True和False选项,因为“向导”不会更新当前配置。
还有一点需要注意,它还会创建一个全新的加密文件,所有旧设置都不见了....
案例2: 你依赖于像Newtonsoft.Json.dll这样的东西,你要做的是1.将该dll复制到一个安全的非构建相关位置。 2.将输出设置选项卡中的dll链接到正确的主程序集 一个。从“以下主装配中的嵌入式相关装配”列表中选择它 湾现在单击“其他依赖项/文件”并添加该文件 如果找到更多我无法编译的情况,我会更新帖子,或者联系我,因为找到这样的错误会非常令人沮丧......
答案 3 :(得分:0)
我刚刚遇到同样的问题,这是基于Crypto帮助文档的答案,它通过抑制其MSBuild集成完全消除了对Crypto的解决方案依赖性。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == '....'">
和<Import Project="..." />
(包括)在项目文件的末尾。所以在我的情况下,我在第一个项目中删除了:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<CO_FirstProject>True</CO_FirstProject>
<CO_LastProject>False</CO_LastProject>
<CO_Config>Release|AnyCPU</CO_Config>
<CO_ProjectFilePath>..\.."ALL MY DLL/EXE HERE"
</PropertyGroup>
<Import Project="C:\Program Files (x86)\LogicNP Software\Crypto Obfuscator For .Net 2015\CryptoObfuscator.targets" />
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == '....' ">
在我的上一篇:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<CO_FirstProject>False</CO_FirstProject>
<CO_LastProject>True</CO_LastProject>
<CO_Config>Release|AnyCPU</CO_Config>
<CO_ProjectFilePath>..\MySln_Release_AnyCPU.obproj</CO_ProjectFilePath>
</PropertyGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<CO_ObjFiles Include="ALL MY DLL/EXE HERE">
<InProject>false</InProject>
</CO_ObjFiles>
<CO_BinFiles Include="..ALL MY DLL/EXE HERE">
<InProject>false</InProject>
</CO_BinFiles>
</ItemGroup>
<Import Project="C:\Program Files (x86)\LogicNP Software\Crypto Obfuscator For .Net 2015\CryptoObfuscator.targets" />
建立并瞧!