首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PreEmptive Dotfuscator在Xamarin上不起作用

PreEmptive Dotfuscator在Xamarin上不起作用
EN

Stack Overflow用户
提问于 2018-02-13 17:40:33
回答 2查看 2.1K关注 0票数 1

我正在使用PreEmptive混淆程序(Dotfuscator)来混淆一个Xamarin应用程序。我的问题是,混淆器不会混淆我的项目dll。当我在模糊处理后打开dll时,我仍然看到可读的信息。当我单击build/rebuild按钮时,模糊处理工具会自动打开-这证明我正确地链接/配置了它。

可能的问题是什么?请看下面的截图:

我的项目文件编码:

代码语言:javascript
复制
  <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
   <DotfuscatorXamarinCliPath>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe</DotfuscatorXamarinCliPath>
    <DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
    <DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile> 

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>8.0.30703</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{88F1AA1B-4608-40F7-B14D-C7E28099A26E}</ProjectGuid>
    <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>TestDotObfuscator</RootNamespace>
    <AssemblyName>TestDotObfuscator</AssemblyName>
    <FileAlignment>512</FileAlignment>
    <AndroidApplication>True</AndroidApplication>
    <AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
    <AndroidResgenClass>Resource</AndroidResgenClass>
    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
    <AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
    <TargetFrameworkVersion>v6.0</TargetFrameworkVersion>
    <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
    <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
    <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>True</DebugSymbols>
    <DebugType>Full</DebugType>
    <Optimize>False</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <AndroidUseSharedRuntime>True</AndroidUseSharedRuntime>
    <AndroidLinkMode>None</AndroidLinkMode>
    <EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>
    <AotAssemblies>false</AotAssemblies>
    <EnableLLVM>false</EnableLLVM>
    <BundleAssemblies>false</BundleAssemblies>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DotfuscatorXamarinEnabled>true</DotfuscatorXamarinEnabled> 
    <DebugSymbols>True</DebugSymbols>
    <DebugType>PdbOnly</DebugType>
    <Optimize>True</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <AndroidManagedSymbols>true</AndroidManagedSymbols>
    <AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>
    <AndroidLinkMode>SdkOnly</AndroidLinkMode>
    <EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk>
    <AotAssemblies>false</AotAssemblies>
    <EnableLLVM>false</EnableLLVM>
    <BundleAssemblies>false</BundleAssemblies>
    <AndroidCreatePackagePerAbi>true</AndroidCreatePackagePerAbi>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Core" />
    <Reference Include="Mono.Android" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="DB.cs" />
    <Compile Include="MainActivity.cs" />
    <Compile Include="Resources\Resource.Designer.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="GettingStarted.Xamarin" />
    <None Include="Resources\AboutResources.txt" />
    <None Include="Properties\AndroidManifest.xml" />
    <None Include="Assets\AboutAssets.txt" />
  </ItemGroup>
  <ItemGroup>
    <AndroidResource Include="Resources\layout\Main.axml">
      <SubType>Designer</SubType>
    </AndroidResource>
    <AndroidResource Include="Resources\values\Strings.xml" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Resources\drawable\" />
    <Folder Include="Resources\mipmap-hdpi\" />
    <Folder Include="Resources\mipmap-mdpi\" />
    <Folder Include="Resources\mipmap-xhdpi\" />
    <Folder Include="Resources\mipmap-xxhdpi\" />
    <Folder Include="Resources\mipmap-xxxhdpi\" />
  </ItemGroup>
  <ItemGroup>
    <None Include="DotfuscatorConfig.xml" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
        <Target Name="BeforeBuild">
        </Target>
        <Target Name="AfterBuild">
        </Target>
    -->
  <Import Project="..\..\PreEmptive.Dotfuscator.Xamarin.targets" />
</Project>
EN

回答 2

Stack Overflow用户

发布于 2018-02-16 04:40:09

安装Dotfuscator Community Edition后(在本例中为C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE ),dotfuscator.exe是图形用户界面,dotfuscatorCLI.exe是命令行界面。(专业版的名称和路径有所不同。)

根据你编辑的问题和对评论的回应,你似乎以某种方式用dotfuscator.exe的副本取代了dotfuscatorCLI.exe。当Visual Studio build集成调用dotfuscatorCLI.exe时,它期望运行的是命令行,而不是图形用户界面。

请卸载,然后重新安装Dotfuscator Community Edition:

关闭Visual Studio2017的所有实例。Dotfuscator.

  • Click

  • 从开始菜单中,打开Visual Studio Installer.

  • Under "Visual Studio

  • 2017",选择修改(它可能在More drop-down).

  • Select

Scroll选项卡下。

  • 向下滚动到代码工具部分并取消选中PreEmptive保护-

Modify复选框。卸载完成后,打开“Modify again.

  • Select各个组件”选项卡。向下滚动到“代码工具”部分,然后选中“Dotfuscator.

  • Click Protection -

Modify”复选框。安装完成后,打开命令提示符。

  • run:cd "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE"

  • Run:dotfuscator.exe.

  • Verify PreEmptive user interface (图形用户界面)显示到命令提示符并运行:dotfuscatorCLI.exe.

  • Verify

  • PreEmptive

  • in

  • ,并且图形用户界面不能打开。

然后,假设您已经注册了Community Edition,您应该能够在Visual Studio中运行集成了Dotfuscator的Xamarin构建,并且当您这样做时,图形用户界面应该不会打开。

免责声明:正如评论中提到的,我也在Dotfuscator团队工作,并以该身份回答这个问题。

票数 1
EN

Stack Overflow用户

发布于 2018-02-14 02:06:36

听起来您可能将集成配置为使用GUI可执行文件,而不是CLI (构建)可执行文件。如果您每次构建Xamarin应用程序时都看到Dotfuscator GUI出现,这可能就是问题所在。

根据您使用的是Dotfuscator Community Edition还是Dotfuscator Professional,可执行文件的名称可能不同。对于CE,请使用dotfuscatorCLI.exe。对于专业版,使用dotfuscator.exe

完整披露:我在PreEmptive解决方案公司工作,该公司制作了Dotfuscator。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48763631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档