我无法在 Xamarin.Android porject 中启用 dotfuscator



我正在使用Xamarin.Forms开发跨平台应用程序,并且在Xamarin.Android项目中使用dotfuscator时遇到问题。这是我的开发环境:

  • 视窗 10 专业版
  • Visual Studio Professional 2017(版本 15.9.22(
  • 多特弗斯卡托社区 5.44

安卓项目:

  • 应用:
    • 使用安卓版本编译:安卓9.0(Pie(
  • 安卓清单:
    • 最低安卓版本:安卓 5.0(API 级别 21 - 棒棒糖(
    • 目标安卓版本:安卓9.0(API级别28 - Pie(
  • Xamarin.Forms 4.6

我正在遵循本指南:将Dotfuscator的保护集成到Visual Studio中的Xamarin应用程序中

导入目标文件

在"导入目标文件"步骤中,我必须添加一个带有目标文件相对路径的<Import>标记。当我打开项目文件时,我可以看到标签已经存在:

<Import Project="$(MSBuildExtensionsPath)XamarinAndroidXamarin.Android.CSharp.targets" />

我检查了该文件是否存在于此路径中:C:Program Files (x86)Microsoft Visual Studio2017ProfessionalMSBuildXamarinAndroidXamarin.Android.CSharp.targets.我没有更改此标签,因为我认为这是一个正确的配置。

设置 MSBuild 属性

在"设置 MSBuild 属性"步骤中,我添加了一个<PropertyGroup>标记。我将其添加为<Project>根节点的第一个节点。

<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
<DotfuscatorXamarinCliPath>C:Program Files (x86)Microsoft Visual Studio2017ProfessionalCommon7IDEExtensionsPreEmptiveSolutionsDotfuscatorCEdotfuscatorCLI.exe</DotfuscatorXamarinCliPath>
<DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>
<!-- Enable Dotfuscator for Release -->
<DotfuscatorXamarinEnabled Condition="'$(Configuration)' == 'Release'">true</DotfuscatorXamarinEnabled>
</PropertyGroup>
...

将 Dotfuscator 配置文件添加到项目

在将 Dotfuscator 配置文件添加到项目步骤中,我在最后一个<ItemGroup>标签之后添加了这个<ItemGroup>标签:

...
</ItemGroup>
<ItemGroup>
<None Include="DotfuscatorConfig.xml" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)XamarinAndroidXamarin.Android.CSharp.targets" />
</Project>

完成这 3 个步骤后,我保存了项目文件,在编辑器中将其关闭并重新加载了项目。然后,我选择了 Android 项目作为启动项目,并在配置组合框中选择了发布。之后,我构建了项目,这是输出:

2>  MyApp.Android -> C:..MyAppMyApp.AndroidbinReleaseMyApp.Android.dll
2>  No way to resolve conflict between "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e". Choosing "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" arbitrarily.

没有关于使用 Dotfuscator 保护构建项目的第 5 步中描述的行:

2>  Running Dotfuscator with a new config file based on project references...
2>  Finished running Dotfuscator with a new config file.
2>C:codeprotected-bugsweeperBugSweeperBugSweeper.AndroidBugSweeper.Android.csproj : warning : A new Dotfuscator config file was generated because it did not exist: 'DotfuscatorConfig.xml'.

并且DotfuscatorConfig.xml文件未创建。

我做错了什么?

您在"导入目标文件">中提到的<Import>标记与说明告诉您添加的标记不同。换句话说,在完成编辑时,项目文件中应该有多个<Import>标签。

你提到的标记是普通 Xamarin 项目文件的一部分,与 Dotfuscator 无关。它指的是已经是Visual Studio安装的一部分的.targets文件。请不要删除或修改此标签。

说明告诉您添加的标记是将 Dotfuscator 导入到项目中的标记。它是指您在前面的步骤中下载的PreEmptive.Dotfuscator.Xamarin.targets文件。例如,如果您将 ZIP 文件的内容提取到与.csproj相同的目录中,则添加:

<Import Project="PreEmptive.Dotfuscator.Xamarin.targets" />

紧接在结束</Project>标记之前。如果将 ZIP 内容提取到其他目录中,则将"标记之间的部分更改为从.csproj目录到文件的相对路径。

(注意:我是Dotfuscator的开发人员,并以这种身份回答这个问题。

相关内容

  • 没有找到相关文章

最新更新