我的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 SDK for Windows Store应用程序的API会违反Windows应用商店认证要求。
如何修复:查看错误消息以识别不属于Windows SDK for Windows Store应用程序的API。请注意,在调试配置中构建的应用程序或未启用.NET Native的应用程序(如果适用)可能会使此测试失败,因为这些环境可能会引入不受支持的API。在发布配置中重新测试您的应用程序,并启用.NET Native(如果适用)。
所以我已经检查过,它总是在Release配置中构建,并始终启用.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正在建设和发布的价值而言。
任何帮助将不胜感激
威尔