Не могу включить dotfuscator в Xamarin. Android porject - PullRequest
0 голосов
/ 28 мая 2020

Я разрабатываю кроссплатформенное приложение с использованием Xamarin.Forms, и у меня возникли проблемы с использованием dotfuscator в моем проекте Xamarin. Android. Это моя среда разработки:

  • Windows 10 Pro
  • Visual Studio Professional 2017 (версия 15.9.22)
  • Dotfuscator Community 5.44

Android проект:

  • Приложение:
    • Скомпилировать с использованием Android версии: Android 9.0 (P ie)
  • Android Манифест:
    • Минимальная Android версия: Android 5.0 (уровень API 21 - леденец)
    • Целевой Android версия: Android 9.0 ( Уровень API 28 - P ie)
  • Xamarin.Forms 4.6

Я следую этому руководству: Интеграция защиты Dotfuscator в ваш Xamarin Приложения в Visual Studio

Импорт файла целей

На шаге Импорт файла целей мне пришлось добавить <Import> тег с относительным путем к целевому файлу. Когда я открыл файл проекта, я увидел, что тег уже существует:

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

Я проверил, существует ли файл по этому пути: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Xamarin\Android\Xamarin.Android.CSharp.targets. Я не менял этот тег, так как думал, что это правильная конфигурация.

Установить свойства MSBuild

На шаге Установить свойства MSBuild Я добавил тег <PropertyGroup>. Я добавил его как первый узел <Project> root узла.

<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 Studio\2017\Professional\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe</DotfuscatorXamarinCliPath>
    <DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>
    <!-- Enable Dotfuscator for Release -->
    <DotfuscatorXamarinEnabled Condition="'$(Configuration)' == 'Release'">true</DotfuscatorXamarinEnabled>
  </PropertyGroup>
  ...

Добавить файл конфигурации Dotfuscator в проект

В Добавить Dotfuscator Config File to Project step Я добавил этот тег <ItemGroup> после последнего <ItemGroup> one:

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

После этих 3 шагов я сохранил файл проекта, закрыл его в редакторе и перезагрузил проект. Затем я выбрал проект Android в качестве проекта StartUp и Release в поле со списком конфигурации. После этого я собрал проект и получил результат:

2>  MyApp.Android -> C:\..\MyApp\MyApp.Android\bin\Release\MyApp.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.

Ничего о строках, описанных на 5-м шаге Сборка проекта с защитой Dotfuscator :

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

И DotfuscatorConfig.xml файл не был создан.

Что я делаю не так?

1 Ответ

2 голосов
/ 28 мая 2020

Тег <Import>, который вы упоминаете в Import the Targets File , отличается от тега, который вам нужно добавить в инструкции. Другими словами, к моменту завершения sh редактирования в файле проекта должно быть несколько <Import> тегов.

Тег, который вы упомянули, является частью обычного проекта Xamarin. файл и не имеет отношения к Dotfuscator. Он относится к файлу .targets, который уже является частью вашей установки Visual Studio. Пожалуйста, не удаляйте и не изменяйте этот тег.

Тег, добавляемый в инструкциях, является тем тегом, который импортирует Dotfuscator в ваш проект. Он относится к файлу PreEmptive.Dotfuscator.Xamarin.targets, который вы загрузили на на предыдущем шаге . Например, если вы извлекли содержимое ZIP-файла в тот же каталог, что и ваш .csproj, добавьте:

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

непосредственно перед закрывающим тегом </Project>. Если вы извлекли содержимое ZIP-файла в другой каталог, измените часть между отметками " на относительный путь от вашего каталога .csproj к файлу.

( Примечание : Я разработчик Dotfuscator и отвечаю на этот вопрос в этом качестве.)

...