web-dev-qa-db-ja.com

UWPから.NETCoreライブラリを参照できません

。NETCoreライブラリと次のproject.jsonがあります。

{
  "version": "1.0.0-*",
  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },
  "frameworks": {
    "netstandard1.6": { }
  },
  "scripts": {
    "postcompile": [
      "dotnet pack --no-build --configuration Release",
      "xcopy bin\\Release ..\\..\\lib\\ /Y"
    ]
  }
}

ここで、コンパイル後のスクリプトはnugetパッケージを作成します。これは、 これらの手順 に従って、VSでカスタムフィードとして追加しました。これは、Windowsユニバーサルアプリから参照したいためです。これは、 この質問 によると、他の方法では(まだ)できません。しかし、試してみると、次のメッセージが表示されます。

Package AEther 1.0.0 is not compatible with uap10.0 (UAP,Version=v10.0).
Package AEther 1.0.0 supports: netstandard1.6 (.NETStandard,Version=v1.6)
One or more packages are incompatible with UAP,Version=v10.0.

これは私にとって意味をなさなくなるところです。 this によると、netstandard> = 1.6.0で正常に動作するはずですが、 this Official table は、netstandard <= 1.4.0をターゲットにする必要があると言っていますが、そうではありません。 t何かを変更します。さらに紛らわしいことに、bothバージョンのnetstandard(依存関係とターゲットフレームワーク)をたとえば1.5にダウングレードすると、ファイルに1.6を指定しなくても、まったく同じエラーが発生します。

更新 UWPproject.jsonは次のようになります

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.1"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

誰かが片付けることができますどちらか

  1. UWPから.NetCoreライブラリを参照する方法または
  2. 私の特定のケースでは何が起こっていますか?

[〜#〜] answer [〜#〜]

次のように、UWPアプリにインポートを追加して解決しました。

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.1"
  },
  "frameworks": {
    "uap10.0": { import [ "netstandard1.6" ] }
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}
12
Volker Schmidt

microsoft.NETCore.UniversalWindowsPlatformを5.2.1にアップグレードする必要があります


7月15日に更新

わかりました、これが私の結果です

  1. 新しいUWPを作成する
  2. 14年7月にリリースされる5.2.2にアップグレードします。
  3. project.jsonを更新し、「netstandard1.6」をインポートします

    { "dependencies": { "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2", "Test": "1.0.0" }, "frameworks": { "uap10.0": { "imports": [ "netstandard1.6" ] } }, "runtimes": { "win10-arm": {}, "win10-arm-aot": {}, "win10-x86": {}, "win10-x86-aot": {}, "win10-x64": {}, "win10-x64-aot": {} } }

  4. 新しいdotnetコアライブラリを作成する

  5. ライブラリをビルドし、nugetパッケージを生成します
  6. .dllファイルまたはnugetパッケージを参照できます。そして私Doはコードを入力している間インテリジェントになります
  7. UWPは正常にビルドおよびデプロイされますが、実行すると例外がスローされます enter image description here
10
Brian Ding

これは私にとって意味をなさなくなるところです。これによると、netstandard> = 1.6.0で正常に動作するはずですが、この公式の表では、netstandard <= 1.4.0をターゲットにする必要があると示されていますが、それでも何も変わりません。さらに紛らわしいことに、両方のバージョンのnetstandard(依存関係とターゲットフレームワーク)をたとえば1.5にダウングレードした場合でも、ファイルに1.6を指定しなくても、まったく同じエラーが発生します。

ユニバーサルWindowsプラットフォームはnetstandard1.4にマップされます -1.6にも1.5にもマップされません。したがって、ライブラリ(AEtherと呼ばれる)には、UWPアプリよりも高い要件があります。

  1. UWPから.NetCoreライブラリを参照する方法または

リンクされたSO質問 )で述べたように、これはVisualStudioではまだサポートされていません。

私はそれがCLIによるサポートに関連していると推測することができるだけです 未解決の問題 。今日の時点で、Microsoft.NETCore.UniversalWindowsPlatformメタパッケージのバージョン5.3で修正される予定ですが、以前は5.2.2で修正される予定でした。

  1. 私の特定のケースでは何が起こっていますか?

NuGetは、パッケージがnetstandard1.6ターゲットフレームワーク のみをサポートし、uap10.0はサポートしないことを通知しています。実際、.nupkgを解凍すると、lib\netstandard1.6の下にDLLがあります。

dotnet pack は、.nuspecからproject.jsonを自動的に作成するため、適切なフレームワーク(netstandard1.4など)で修正する必要があります。たとえば、さまざまなフレームワーク用にコンパイルする方が簡単です。たとえば、 。NET Platform Standardと互換性のあるポータブルプロファイル

7
jnovo