2

我的 Xamarin.Forms 应用程序遇到此问题已有一段时间了。我能够成功构建 UWP 应用程序包,但它总是无法通过 WACK 测试并出现以下问题:

二进制分析器

发现错误:二进制分析器测试检测到以下错误:

文件 C:\Program Files\windowsapps[appname]r_2.1.2.0_x64__tpaj9sfh9f80r\clrjit.dll 未能通过 AppContainerCheck 检查。

未修复的影响:如果应用程序不使用可用的 Windows 保护,它可能会增加客户计算机对恶意软件的脆弱性。

如何修复:在链接应用程序时应用所需的链接器选项 - SAFESEH、DYNAMICBASE、NXCOMPAT 和 APPCONTAINER。

支持的 API

发现错误:支持的 API 测试检测到以下错误:

此应用程序类型不支持 advapi32.dll 中的 API SystemFunction036。clrjit.dll 调用此 API。

此应用程序类型不支持 kernel32.dll 中的 API DebugBreak。clrjit.dll 调用此 API。

此应用程序类型不支持 kernel32.dll 中的 API HeapValidate。clrjit.dll 调用此 API。

此应用程序类型不支持 kernel32.dll 中的 API LoadLibraryExW。clrjit.dll 调用此 API。

此应用程序类型不支持 kernel32.dll 中的 API RtlCaptureContext。clrjit.dll 调用此 API。

此应用程序类型不支持 kernel32.dll 中的 API RtlVirtualUnwind。clrjit.dll 调用此 API。

此应用程序类型不支持 kernel32.dll 中的 API UnhandledExceptionFilter。clrjit.dll 调用此 API。

此应用程序类型不支持 kernel32.dll 中的 API VirtualAlloc。clrjit.dll 调用此 API。

此应用程序类型不支持 kernel32.dll 中的 API VirtualProtect。clrjit.dll 调用此 API。

未修复时的影响:使用不属于 Windows 应用商店应用程序的 Windows SDK 的 API 违反了 Windows 应用商店认证要求。

如何修复:查看错误消息以确定不属于适用于 Windows 应用商店应用的 Windows SDK 的 API。请注意,在调试配置中构建或未启用 .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 正在构建和发布良好。

任何帮助,将不胜感激

将要

4

0 回答 0