Я разрабатываю кроссплатформенное приложение с использованием 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
файл не был создан.
Что я делаю не так?