web-dev-qa-db-ja.com

Netstandard1.xプロジェクトにはNetstandard1.x Nugetパッケージをインストールできません

最新のVisual Studio 2015、netcore、およびnugetツールとともにWindows 10を新規インストールした後、Nugetパッケージを.netstandardプロジェクトにインストールできなくなりました。出力例を次に示します。

Restoring packages for 'ClassLibrary1'.
Restoring packages for c:\users\zone1\documents\visual studio 2015\Projects\ClassLibrary1\ClassLibrary1\project.json...
Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
  - monoandroid10 (MonoAndroid,Version=v1.0)
  - monotouch10 (MonoTouch,Version=v1.0)
  - net45 (.NETFramework,Version=v4.5)
  - netcore50 (.NETCore,Version=v5.0)
  - netstandard1.0 (.NETStandard,Version=v1.0)
  - netstandard1.3 (.NETStandard,Version=v1.3)
  - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
  - win8 (Windows,Version=v8.0)
  - wp8 (WindowsPhone,Version=v8.0)
  - wpa81 (WindowsPhoneApp,Version=v8.1)
  - xamarinios10 (Xamarin.iOS,Version=v1.0)
  - xamarinmac20 (Xamarin.Mac,Version=v2.0)
  - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
  - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
One or more packages are incompatible with .NETStandard,Version=v1.3.
Package restore failed for 'ClassLibrary1'.

プロジェクトClassLibrary1をポータブルクラスライブラリとして作成し、ターゲットをnetstandard1.3に変更しましたが、netstandard1.3のサポートを示すNugetパッケージをインストールできません。 netstandard1.5およびその他のバージョンについても同様です。

MailKit (.netstandardをサポートするプロジェクト)のソースをプルしてビルドしてみて、プロジェクトを間違って設定していないことと同じ問題が発生していることを確認します。

Errors in C:\Users\zone1\Repos\MailKit\MailKit\MailKit.CoreFX.xproj
    Package System.Net.NetworkInformation 4.1.0 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.Net.NetworkInformation 4.1.0 supports:
      - monoandroid10 (MonoAndroid,Version=v1.0)
      - monotouch10 (MonoTouch,Version=v1.0)
      - net45 (.NETFramework,Version=v4.5)
      - netcore50 (.NETCore,Version=v5.0)
      - netstandard1.0 (.NETStandard,Version=v1.0)
      - netstandard1.3 (.NETStandard,Version=v1.3)
      - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
      - win8 (Windows,Version=v8.0)
      - wp8 (WindowsPhone,Version=v8.0)
      - wpa81 (WindowsPhoneApp,Version=v8.1)
      - xamarinios10 (Xamarin.iOS,Version=v1.0)
      - xamarinmac20 (Xamarin.Mac,Version=v2.0)
      - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
      - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)
    One or more packages are incompatible with .NETStandard,Version=v1.3.

詳細をここに投稿しました: https://github.com/NuGet/Home/issues/34

これはすべて、Windowsの新規インストールで再フォーマットする前に機能しました。何か不足していますか?

18
zone117x

@ eddie-msft からのヒントのおかげで、実用的なソリューションを得ました。

ここから最新のnugetコマンドラインユーティリティをダウンロードします https://dist.nuget.org/index.html (- v3.5.0-rc1 投稿時)

次に実行します:

nuget.exe locals -clear all

VSを必ず閉じて、既存のproject.lock.jsonファイルを削除しました。これで、すべてが意図したとおりに機能するようになりました。

この問題は、Windows/VS/toolingを新たにインストールしたすべてのシステムで発生することがわかったため、インストーラーのバグである可能性があります。

22
zone117x

VS 2017の場合-更新15.3

これを回避するには、次を実行します

.csproj .NET標準ライブラリのファイルとこれらの行の追加

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
 <TargetFramework>netstandard1.4</TargetFramework>
 <PackageTargetFallback Condition=" '$(TargetFramework)' == 'netstandard1.4' ">$(PackageTargetFallback);dotnet5.6;portable-net45+win8</PackageTargetFallback>
 </PropertyGroup>



Other stuff here
 </Project>

PackageTargetFallbackを使用すると、古い互換パッケージを使用できます。

https://www.cameronmoten.com/2017/08/19/fixing-xamarin-with-net-standard-in-visual-studio-2017-v-15-3/

2
Cam Moten

ツーリングで何かが見落とされているように見えますが、この点についてエラーメッセージが常に明確であるとは限りません。ここで両方のインストーラーを実行したことを確認できますか?

Visual Studio 2015 Update (これがあると思います)

。NET Core 1.0.1-VS 2015 Tooling Preview 2

MailKitが失敗するので、プロジェクトファイルの問題だとは本当に思わない。これが機能しない場合にいくつかの良い情報を提供するかもしれない他のビットは、実行することです

Dotnet restore

プロジェクトディレクトリで、Visual Studioを使用せずにdonetがそれを処理する方法を確認します。

1
Feasoron