我能够修改项目的* .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”不是有效选项的构建错误。
答案 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>