2013-08-17 18 views
5

我正在经历不同的混淆选项,我有,为了做到这一点,我第一次尝试我的手在加密。试图混淆我的项目使用加密破坏它

这里是我遵循的步骤:

  1. 打开Cypto向导,并选择一些选项。
  2. 选择我的解决方案文件。

完成向导,我看到的是有一些Dll很好模糊化,但我的项目现在不能构建。我注意到的两件事是我的文件夹中有这个奇怪的.OBPROJ文件,它负责删除我所有的旧程序集,然后再对其进行混淆。

我看到下面的错误我的18个项目,其没有能够建立的4:

System.IO.FileNotFoundException: File 'C:\Dropbox\CPTFramework_old\CommonLib\obj\Debug\CommonLib.dll' not found. 

适合所有4个项目,这些项目失败的非常相似。现在,我不知道它对OBJ/Debug文件夹中的dll文件做了什么,但文件绝对不存在。

我注意到的另一件事是,所有的项目,当单独构建时,确实没有问题。所以我的解决方案文件肯定发生了错误。但我无法找出究竟发生了什么变化。

+0

commonlib .pdb是那里但commonlib.dll不存在... – TeaLeave

+0

我注意到的另一件事是,当我手动将所有这些丢失的程序集从Bin复制到Obj文件夹,然后再次执行构建时,我看到了相同的错误。另外,当我浏览文件夹时,文件现在已经消失。 – TeaLeave

+0

你有没有解决这个问题?我有同样的问题。 –

回答

3

我最近有同样的问题,所以虽然过时了,但对于其他人来说,这是答案。

它与您的构建顺序有关。我发现VS中的构建顺序并不总是与实际的构建顺序相对应。建议在构建失败后查看输出窗口,并查看哪些项目是首次构建的(需要这些项目以配置加密)。显然,不要忘记忽略任何安装项目或项目不是以发布模式构建的项目。

所有需要的是,用正确的第一个和最后一个项目重新配置加密,重新加载你的解决方案,它会建立。

2

有类似的问题。经过很多努力,找到了解决办法。

在多核处理器中,VS将并行运行构建,这使得Cyrpto混淆器在上次项目构建完成之前运行。

在VS 2013中将最大并行项目版本数设置为1将解决此问题。

工具 - 选项... - 建立和运行

enter image description here

0

我只是得到了同样的问题,这里是一个基于加密的帮助文档在我的答案,它完全通过抑制删除您的解决方案依赖于加密其MSBuild集成。

  • 编辑的csproj /当您运行加密向导中选择的第一个和最后一个项目的vbproj文件:除去对项目文件的末尾 <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" /> 

构建瞧!

0

基本上,错误发生时

1:您曾经指定了一个项目,是第一个或最后,在你的解决方案,这是不是或不再是这样了。 2:你有依赖太像Newtonsoft.Json

案例1: 我偶然发现了一个“为指定的以前启动”项目中添加依赖时遇到同样的问题。我再次运行向导,然后有2个项目被标记为第一...

什么也会发生的是,你在几个项目中使用相同的共享DLL,其中一个它是第一个,另一个它安装在第一个,然后你开始必须根据您编译的内容手动更新项目。

理想的情况下,需要设置第一个或最后一个不应该需要为构建顺序已经在解决方案,但我不会在LogicNP工作...

要解决这个问题看在文件的抱怨VS的输出,因为这可能是错误的“第一”标志。

然后右键单击该项目并从弹出窗口中选择“卸载项目”。现在再次右键单击卸载的项目并选择编辑;或在文本编辑器中打开.csproj文件。

滚动到文件底部,查找文本看起来像这样... 假 假 发布| AnyCPU .. \ CATS.Settings_Release_AnyCPU.obproj

看一看CO_FirstProject和CO_LastProject标记,并确保它们具有正确的True和False选项,因为“向导”不会更新当前配置。

还要说明一点,这也创造了一个全新的加密文件,所有的旧的设置都没有了....

案例2: 您有类似的Newtonsoft.Json的依赖。 DLL,你要做的是1.将该DLL复制到安全的非构建相关位置。 2.通过 a将输出设置选项卡中的dll链接到正确的主组件。从“以下主要部件中的嵌入式相关部件”列表中选择它 b。单击附加依赖/文件,并添加文件 Now you should have something like this 如果找到更多的情况下,我不能编译,我会更新帖子,或与我联系,因为它可以是非常令人沮丧的发现这样的错误...