UWP-зависимости от библиотек ARM и X86 - PullRequest
0 голосов
/ 05 марта 2020

Мы создаем умеренно большое приложение UWP, предназначенное для использования только на Windows 10 на платформе x64.

Мы уже отключаем в .csproj все зависимости на x86, arm и другой платформе, ограничиваясь x64 наше решение.

Кто бы ни собирал приложение при помощи msbuild или Visual Studio (2017), ему нужны пакеты Nuget для arm, x86, arm64.

Эти другие пакеты не предназначены для пользователя нас и использовать пространство и занять время для установки. Повсюду в VS, где мы находим зависимости для других платформ, кроме x64, мы отключаем.

Однако проекту все еще требуются пакеты Nuget, такие как:

  • runtime.win10-arm.Microsoft . Net .UWPCoreRuntimeSdk
  • runtime.win10-x86.Microsoft. Net .UWPCoreRuntimeSdk
  • runtime.win10-arm.Microsoft. Net. Родной. Компилятор
  • runtime.win10-x86.Microsoft. Net .Native.Compiler
  • runtime.win10-arm64.Microsoft. Net .Native.SharedLibrary
  • runtime.win10-x86. Microsoft. Net .Native.SharedLibrary
  • runtime.win10-arm.Microsoft. Net .Native.SharedLibrary
  • runtime.win10-arm.Microsoft.NETCore.UniversalWindowsPlatform
  • runtime.win10-arm64-aot.Microsoft.NETCore.UniversalWindowsPlatform
  • .... и т. Д.

Кто-то задумался, как удалить такие зависимости?

Во время компиляции мы используем так:

msbuild /p:Configuration=Debug /p:Platform='x64' -verbosity:m /p:AppxPackageDir=".\bin" project.csproj

1 Ответ

0 голосов
/ 05 марта 2020

У кого-то была идея, как удалить такие зависимости?

Я думаю, что вы хотите удалить зависимости этих пакетов nuget в x64 platform, и если да, вы можете попробовать мое предложение использовать MSBuild Condition с Выберите / Когда , чтобы указать эти пакеты nuget для использования на указанных c платформах.

Вам следует изменить xxx.csproj следующим образом :

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
.......
.......

 <Choose>
    <When Condition="'$(Platform)'=='ARM'">
      <ItemGroup>
        <PackageReference Include="runtime.win10-arm.Microsoft.Net.UWPCoreRuntimeSdk">
          <Version>xxxxx</Version>
        </PackageReference>
        <PackageReference Include="runtime.win10-arm.Microsoft.Net.Native.Compiler">
          <Version>xxxxx</Version>
        </PackageReference>
        <PackageReference Include="runtime.win10-arm.Microsoft.Net.Native.SharedLibrary">
          <Version>xxxxx</Version>
        </PackageReference>
        <PackageReference Include="runtime.win10-arm.Microsoft.NETCore.UniversalWindowsPlatform">
          <Version>xxxxx</Version>
        </PackageReference>
      </ItemGroup>
    </When>
     <When Condition="'$(Platform)'=='ARM64'">
      <ItemGroup>
        <PackageReference Include="runtime.win10-arm64.Microsoft.Net.Native.SharedLibrary">
          <Version>xxxxx</Version>
        </PackageReference>
        <PackageReference Include="runtime.win10-arm64-aot.Microsoft.NETCore.UniversalWindowsPlatform">
          <Version>xxxxx</Version>
        </PackageReference>
      </ItemGroup>
    </When>
     <When Condition="'$(Platform)'=='X86'">
      <ItemGroup>
        <PackageReference Include="runtime.win10-x86.Microsoft.Net.UWPCoreRuntimeSdk">
          <Version>xxxxx</Version>
        </PackageReference>
        <PackageReference Include="runtime.win10-x86.Microsoft.Net.Native.Compiler">
          <Version>xxxxx</Version>
        </PackageReference>
        <PackageReference Include="runtime.win10-x86.Microsoft.Net.Native.SharedLibrary">
          <Version>xxxxx</Version>
        </PackageReference>

      </ItemGroup>
    </When>

  </Choose>

......
.....
</Project>

Надеюсь, это поможет вам.

...