3

ファイルを使用してpackages.configNuGet の依存関係を指定する場合、allowedVersions属性を指定して、更新できるバージョンの範囲を定義するSemVer文字列を指定できます。を使用する[]ことで、現在、パッケージを単一のバージョンに効果的に固定できます。例えば:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Common.Logging" version="3.3.0" allowedVersions="[3.3.0, 3.3.0]" />      
</packages>

.net コア プロジェクトではproject.json、NuGet の依存関係を指定する必要があります (短命かもしれません)。NuGet の依存関係をdotnet restore、アプリケーションを新しいバージョンに更新しないようなバージョンに固定するにはどうすればよいですか?パッケージソース?

{
  "version": "1.0.0-*",
  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Newtonsoft.Json": "9.0.1" //how can i pin to 9.0.1 ??
  },
}

このnuget ドキュメントの図 #2 は、これが可能であることを暗示していますが、それを行うための構文は提供していません。

- アップデート -

2 つの .net コア クラス ライブラリとローカル ファイル システムをパッケージ リポジトリとして使用して、これをテストしました。という名前のクラス ライブラリを作成し、UpdateMeDependencyLibv1.0.0 としてパッケージ化して、2 番目のプロジェクトから nuget 経由で使用しました。以下は、2 番目のクラス ライブラリを使用する project.json です。UpdateMeDependencyLib

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "UpdateMeDependencyLib": "1.0.0"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}

その後、バージョン 1.1.0 に更新UpdateMeDependencyLibして再パッケージ化したため、ローカル システムには v1.0.0 と v1.1.0 の nuget パッケージが存在します。の v1.1.0 を作成した後UpdateMeDependencyLib、次のエクスペリエンスが得られます

  • UpdateMeDependencyLib出力 v1.1.0 をその bin ディレクトリに 消費する Visual Studio でプロジェクトをコンパイルする (コンシューマー project.json を変更しない)
    • コンシューマー ライブラリでパッケージの復元を強制すると、Nuget の警告が表示されるようになりました。

NU1007 警告

そのため、消費ライブラリで「1.0.0」を使用するだけではピン留めされず、NuGet ソースに新しいバージョンが表示されると自動的に更新されます。

4

2 に答える 2

1

参照には次の表記を使用する必要があります

"UpdateMeDependencyLib": {
   "version": "1.0.0",
   "target": "package"
}

2 つのプロジェクトが同じソリューション内にあるため、システムはローカル パッケージ リポジトリを使用して依存関係を解決しません。プロジェクトを参照として直接使用します。参照 1.0.0 がソリューションに存在しなくなったため (および"UpdateMeDeepencyLib": "1.0.0">= 1.0.0 を意味するため)、Nuget ルール「適用可能な最低バージョン」を使用し、1.1.0 プロジェクトを参照して依存関係を解決します。依存関係ツリーの UpdateMeDependencyLib のアイコンはナゲットのアイコンではないことに注意してください。

私が理解できないのは、依存関係を 1.0.0 に厳密に設定し、この場合、ビルドを中断する方法です。

于 2016-10-31T16:14:46.927 に答える