如何配置babel.net obfuscator只在发布版本上运行?

时间:2011-08-25 20:01:55

标签: c# obfuscation

我能够修改项目的* .proj文件以包含babel构建目标。

<Import Project="C:\Program Files\Babel\MSBuild\Babel.Build.targets" />

这可以工作,但是对于调试和发布版本都执行babel。我希望babel只对发布版本进行模糊处理。每本手册82我应该包括以下代码。

<Import Project="C:\Program Files\Babel\MSBuild\Babel.Build.targets" />
<Choose>
<When Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PropertyGroup>
<EnableObfuscation>false</EnableObfuscation>
</PropertyGroup>
</When>
<When Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PropertyGroup>
<EnableObfuscation>true</EnableObfuscation>
<ILIterations>3</ILIterations>
<StringEncryption>true</StringEncryption>
</PropertyGroup>
</When>
</Choose>

但是,当在* .proj文件中包含此代码时,我会收到“EnableObfuscation”不是有效选项的构建错误。

2 个答案:

答案 0 :(得分:1)

检查Babel.Build.targets的路径是否正确。然后编辑该文件并搜索EnableObfuscation属性以确保它存在。

我将建议的配置从文档更改为以下内容并添加到我的所有项目中,并且工作正常。

<Import Project="C:\Program Files\Babel\MSBuild\Babel.Build.targets" />
  <Choose>
    <When Condition=" '$(Configuration)' == 'Debug' ">
      <PropertyGroup>
        <EnableObfuscation>false</EnableObfuscation>
      </PropertyGroup>
    </When>
    <When Condition=" '$(Configuration)' == 'Release' ">
      <PropertyGroup>
        <EnableObfuscation>true</EnableObfuscation>
        <ILIterations>3</ILIterations>
        <StringEncryption>true</StringEncryption>
      </PropertyGroup>
    </When>
  </Choose>

上述内容适用于我的Windows Phone 7项目,除了启动项目外,还可以通过添加此项目来使用XAP文件

  <Target Name="AfterBuild">
    <CreateProperty Value="@(_OutputPathItem->'%(FullPath)$(XapFilename)')">
      <Output TaskParameter="Value" PropertyName="BabelInputFile"/>
    </CreateProperty>
  </Target>

答案 1 :(得分:0)

我使用的是 NuGet 包,最终在我的 csproject 中使用了 packageReference 的条件:

<ItemGroup Condition="'$(Configuration)'=='Release'">
  <PackageReference Include="Babel.Obfuscator" Version="X.X.X">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
 </PackageReference>