none
Nuget インストールで「NETStandard.Library' に対して定義された依存関係」について RRS feed

  • 質問

  • お世話になります。

    前回、「C# WinForm で ZXingを使ったバーコードの読み取りをしたいが、エラー」でおせわになり、VS2015では完了ですが、VS2010で同様のことが出来ません。

    下記のようなメッセージが出ます。

    PM> Install-Package ZXing.Net -Version 0.16.4
    Install-Package : 'ZXing.Net' にはすでに 'NETStandard.Library' に対して定義された依存関係があります。
    発生場所 行:1 文字:1
    + Install-Package ZXing.Net -Version 0.16.4
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Install-Package], InvalidOperationException
        + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
     

    ググってもあまり情報が出ないので教えてください。よろしくお願いします。

    Windows10 VS2010 C# WinFormアプリ

    2018年7月3日 0:26

回答

  • 別スレで解決しているようですが、ちょっと勘違いがあるようなので

    ZXing.Net 0.16.4 の Dependencies (依存関係) をみると、.NET Standard 1.0 以降が対象となっており、.NET Framework は含まれていないようです。

    nugetのパッケージ定義ZXing.Net.nuspecの以下の部分
    <group targetFramework=".NETFramework4.0" />
    の子要素にdependencyが定義されていないので4.0用のdllは.NetStandardに依存してないです。
    #dllから参照されていないことも確認できます

    このエラーの問題はVS2010用のNugetPackageManagerが*.nuspec内のtargetFrameworkに書かれているstandard*.*のバージョン部分の違いを認識できてないからっぽいです。
    同一のtargetFrameworkが複数回定義されていると誤認してしまうために「既に定義された」となってしまうのでしょう。
    (ZXing.Net.nuspecに記載のtargetFrameworkをnetstandard1.0だけにしたりすると認識できて、netstandard*.*が複数あるとエラーを吐きます。)

    nugetで最新に更新し続ける必要がないなら、ページにnupkgダウンロードリンクがあるので、ダウンロードして、zipファイルとして解凍してやれば.net4.0用のdllが手に入ります。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク ferret001 2018年7月3日 5:39
    2018年7月3日 4:00
  • Visual Studio 2010 以下はサポートされていないと思います。Visual Studio 2012 以上で試してみてください。

    https://www.nuget.org/packages/ZXing.Net/

    ZXing.Net 0.16.4 の Dependencies (依存関係) をみると、.NET Standard 1.0 以降が対象となっており、.NET Framework は含まれていないようです。

    そして .NET Standard 1.0 は、.NET Framework のプラットフォームでいうと 4.5 相当を意味します。そして Visual Studio 2010 は、残念ながら .NET Framework 4.0 までのサポートであり、4.5 には対応していません。

    • 回答としてマーク ferret001 2018年7月3日 2:39
    2018年7月3日 1:33

すべての返信

  • Visual Studio 2010 以下はサポートされていないと思います。Visual Studio 2012 以上で試してみてください。

    https://www.nuget.org/packages/ZXing.Net/

    ZXing.Net 0.16.4 の Dependencies (依存関係) をみると、.NET Standard 1.0 以降が対象となっており、.NET Framework は含まれていないようです。

    そして .NET Standard 1.0 は、.NET Framework のプラットフォームでいうと 4.5 相当を意味します。そして Visual Studio 2010 は、残念ながら .NET Framework 4.0 までのサポートであり、4.5 には対応していません。

    • 回答としてマーク ferret001 2018年7月3日 2:39
    2018年7月3日 1:33
  • 魔界の仮面弁士様、お世話になります。

    Vs2010は、サポート外なのですね。お調べいただきありがとうございました。

    しかしながら、ZXing.NETを使う(正確には、Jpeg化したバーコードを読み取る機能のみ)を使いたいのですが、方法はないでしょうか?VS2010で作成したアプリなので・・・

    ※表題とは異なりますので、別スレたてます。

    ありがとうございました。

    2018年7月3日 2:39
  • 別スレで解決しているようですが、ちょっと勘違いがあるようなので

    ZXing.Net 0.16.4 の Dependencies (依存関係) をみると、.NET Standard 1.0 以降が対象となっており、.NET Framework は含まれていないようです。

    nugetのパッケージ定義ZXing.Net.nuspecの以下の部分
    <group targetFramework=".NETFramework4.0" />
    の子要素にdependencyが定義されていないので4.0用のdllは.NetStandardに依存してないです。
    #dllから参照されていないことも確認できます

    このエラーの問題はVS2010用のNugetPackageManagerが*.nuspec内のtargetFrameworkに書かれているstandard*.*のバージョン部分の違いを認識できてないからっぽいです。
    同一のtargetFrameworkが複数回定義されていると誤認してしまうために「既に定義された」となってしまうのでしょう。
    (ZXing.Net.nuspecに記載のtargetFrameworkをnetstandard1.0だけにしたりすると認識できて、netstandard*.*が複数あるとエラーを吐きます。)

    nugetで最新に更新し続ける必要がないなら、ページにnupkgダウンロードリンクがあるので、ダウンロードして、zipファイルとして解凍してやれば.net4.0用のdllが手に入ります。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク ferret001 2018年7月3日 5:39
    2018年7月3日 4:00