再投稿は嫌いですが、 MSDNフォーラム に投稿するのが正しいと思いました。HTML/ JavaScriptを使用してUWPアプリで作業している人はあまりいないようですが、すべて、私は素晴らしいSOコミュニティに助けを求めています。
問題:
クラスライブラリへの参照を持つWindowsランタイムコンポーネントへの参照を持つHTML/JavaScriptの非常に単純なUAPアプリがあります。
PCまたはモバイル、あるいはその両方で実行するようにプロジェクトする必要があるため、任意のCPUでコンパイルする必要があります。問題は、アプリをコンパイルしようとすると、次のエラーが発生することです。
Your project.json doesn't list 'win10' as a targeted runtime. You should add '"win10": { }' inside your "runtimes" section in your project.json, and then re-run NuGet restore.
また、ランタイムでプレーンなwin10エントリを追加すると、他にも多くのエラーが発生します。これは私のproject.jsonがどのように見えるかです:
{
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
},
"frameworks": {
"uap10.0": { }
},
"runtimes": {
"win10-arm": { },
"win10-arm-aot": { },
"win10-x86": { },
"win10-x86-aot": { },
"win10-x64": { },
"win10-x64-aot": { }
}
}
また、最小限の再現があります ここ 誰かがそれをチェックすることに興味があるなら。
AnyCPUは、マネージド(C#/ VB)UWPアプリの有効な構成ではなくなりました。これは、UWPアプリのすべてのマネージコード(exeまたはdll)が.NETネイティブツールチェーンを使用してコンパイルされ、アーキテクチャ固有のバイナリが構築されるためです。したがって、HTML/JS UWPアプリでマネージドWinRTコンポーネントを使用している場合は、展開先のデバイス、つまりx86 for Desktopに基づいて、アプリプロジェクトで特定のアーキテクチャを設定する必要もありますARM電話デバイスの場合。
私は似たような設定とまったく同じ問題を抱えています。私の現在の回避策は、デスクトップでテストするときにコンパイラをx86に設定し、モバイルデバイスでテストするときにARMに変更することです。最適とはほど遠いですが、もっと良いものがあれば、私は大好きです返事をする。
this SO postによると、AnyCPUはUWP/C#アプリではサポートされていません。
.NETネイティブコンパイルでテストすることを確認することに加えて、AnyCPUビルド構成が消えたことに気付くかもしれません。 .NET Nativeが混在すると、ネイティブコンパイルはアーキテクチャに依存するため、AnyCPUは有効なビルド構成ではなくなります。これの追加の結果は、アプリケーションをパッケージ化するときに、アプリケーションができるだけ多くのデバイスに適用できることを確認するために、3つのアーキテクチャ構成(x86、x64、およびARM)すべてを選択する必要があるということです。
このエラーを修正するには:[プロジェクト]ページ。 [ビルド]タブ:プラットフォームターゲット= "ドロップダウンの値、つまりローカル実行の場合はx86、x64、ARM"。公開している場合...プロジェクトを右クリックし、[ストア] | [アプリパッケージの作成...]を選択します...パッケージの選択と構成ページで、[ニュートラル(任意のCPU)]のチェックを外し、x86、x64、ARMをチェックします。