ごった煮

色々な事を書いてます

Visual Studio 2019 Preview 1.1のLibrary Managerでライブラリが入れられない際の対処方法

VS2017 15.9.1で入れられていたライブラリが、VS2019 Preview 1.1のLibrary Managerだとすんなり入らなかったので備忘録です。

現象

今回入れたいライブラリは、Materializeです。 VS2017のLibrary Managerの場合、ライブラリをインストールしようとすると以下のjsonがlibman.jsonに出力されます。

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "library": "materialize@1.0.0",
      "destination": "wwwroot/lib/materialize/"
    }
  ]
}

このjsonならそのままライブラリがインストールされます。

ですがVS2019 Preview 1.1の場合、以下のjsonがlibman.jsonに出力されます。

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "ProviderId": "cdnjs",
      "DestinationPath": "wwwroot/lib/materialize/",
      "IsUsingDefaultProvider": true,
      "IsUsingDefaultDestination": false,
      "Name": "materialize",
      "Version": "1.0.0"
    }
  ]
}

このjsonの場合、LIB006のエラーが出ます。

https://github.com/aspnet/LibraryManager/wiki/Error-codes エラーコードリストを見ると

libraryの項目がundefinedの場合のエラーとわかるのでlibraryの項目を追加します。

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "ProviderId": "cdnjs",
      "library": "materialize@1.0.0",
      "DestinationPath": "wwwroot/lib/materialize/",
      "IsUsingDefaultProvider": true,
      "IsUsingDefaultDestination": false,
      "Name": "materialize",
      "Version": "1.0.0"
    }
  ]
}

追加するとLIB005のエラーが出ます。 LIB005は、destinationがundefinedの場合のエラーなのでdestinationを追加します。

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "ProviderId": "cdnjs",
      "library": "materialize@1.0.0",
      "destination": "wwwroot/lib/materialize/",
      "DestinationPath": "wwwroot/lib/materialize/",
      "IsUsingDefaultProvider": true,
      "IsUsingDefaultDestination": false,
      "Name": "materialize",
      "Version": "1.0.0"
    }
  ]
}

とりあえずこれでエラーが出なくなるのでライブラリが復元できます。

まとめ

destinationに入ってほしい値が、DestinationPath、libraryに入ってほしい値がNameとVersionに入ったので今後jsonの記述方法が変わるとかな気がするんですが、 軽くググっただけだといまいちピンとくる情報に当たらなかったので謎です。 とりあえずこれで一旦一件落着