Почему в приложении Xamarin UWP не выполняется бинарный анализатор и проверки поддерживаемого API?
Возникла эта проблема некоторое время с моим приложением Xamarin.Forms. Я могу успешно собрать пакет приложения UWP, но он всегда не проходит тест WACK по следующим причинам:
Бинарный анализатор
Обнаружена ошибка: тест двоичного анализатора обнаружил следующие ошибки:
Файл C:\Program Files\windowsapps[имя приложения]r_2.1.2.0_x64__tpaj9sfh9f80r\clrjit.dll не прошел проверку AppContainerCheck.
Воздействие, если оно не устранено. Если приложение не использует доступные средства защиты Windows, оно может повысить уязвимость компьютера клиента к вредоносным программам.
Как исправить: Примените необходимые параметры компоновщика - SAFESEH, DYNAMICBASE, NXCOMPAT и APPCONTAINER - при связывании приложения.
а также
Поддерживаемые API
Обнаружена ошибка: тест поддерживаемых API обнаружил следующие ошибки:
API SystemFunction036 в advapi32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
API DebugBreak в kernel32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
API HeapValidate в kernel32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
API LoadLibraryExW в kernel32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
API RtlCaptureContext в kernel32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
API RtlVirtualUnwind в kernel32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
API UnhandledExceptionFilter в kernel32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
API VirtualAlloc в kernel32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
API VirtualProtect в kernel32.dll не поддерживается для этого типа приложения. clrjit.dll вызывает этот API.
Влияние, если оно не устранено. Использование API, не входящего в состав Windows SDK для приложений Магазина Windows, нарушает требования сертификации Магазина Windows.
Как исправить: Просмотрите сообщения об ошибках, чтобы определить API, который не является частью Windows SDK для приложений Магазина Windows. Обратите внимание, что приложения, встроенные в отладочную конфигурацию или без поддержки.NET Native (если применимо), могут не пройти этот тест, поскольку в этих средах могут использоваться неподдерживаемые API. Повторно протестируйте свое приложение в конфигурации выпуска и, если применимо, включите.NET Native.
Итак, я проверил, и он всегда встроен в конфигурацию выпуска и всегда с включенным.NET Native. Вот содержание моего csproj:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProjectGuid>{F81FFB5A-CDC4-4EBB-B24E-43C2153EF76B}</ProjectGuid>
<OutputType>AppContainerExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>[AppName]</RootNamespace>
<AssemblyName>[AppName]</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
...
<RuntimeIdentifiers>win10-arm;win10-arm-aot;win10-x86;win10-x86-aot;win10-x64;win10-x64-aot</RuntimeIdentifiers>
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
<AppxBundle>Always</AppxBundle>
<AppxBundlePlatforms>x86|x64|arm</AppxBundlePlatforms>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>ARM</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
<OutputPath>bin\ARM\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>ARM</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
Я действительно не делаю успехи с этим и не могу публиковать в магазине в данный момент. Что бы ни стоило, Android и iOS прекрасно создают и публикуют.
Любая помощь будет оценена
Будет