2

NuGet パッケージLZ4.NETを使用しているソリューションがあります。

パッケージはコンテンツ フォルダーに dll を格納し、ターゲット プロジェクトのルート ディレクトリにコピーされます。

これはソース管理 (Git) にチェックインされていますが、プロジェクト内の dll は除外されています。

現在、packages フォルダーがチェックインされています。このフォルダーには、必要なすべての dll ファイルを含む lib ディレクトリと content ディレクトリの両方があります。

ただし、新しいリポジトリのクローンを作成する場合、プロジェクトをビルドしてもコンテンツがプロジェクトにコピーされず、Visual Studio は dll が見つからないというエラーを返します (プロジェクトには含まれているが、ソース管理から除外されているため)。

ビルドするたびに nuget にコンテンツをコピーさせるにはどうすればよいですか? それとも、dll をプロジェクトにチェックインするだけですか?

アップデート

NuGet パッケージの復元を有効にしました。しかし、設計上、Nuget はコンテンツ ファイルの復元をサポートしていないようです。その場合は、プロジェクトの dll をチェックインする必要があるようです。

ただし、dll は .Net Framework のバージョン (net35、net40、net45) ごとに編成されています。dll をチェックインすると、選択した Nuget に依存するのではなく、チェックインした .Net フレームワーク バージョンに "ロック" されます。

4

1 に答える 1

1

パッケージがプロジェクトにインストールされると、NuGet は実際にこれらの操作を実行します。

  1. ソースからパッケージ ファイルをダウンロードします。
  2. パッケージをいわゆるパッケージ フォルダー (デフォルトでは $(SolutionDir)\packages) にインストールします。
  3. パッケージをプロジェクトにインストールします。これは、DLL への参照の追加、コンテンツ ファイルのプロジェクト ディレクトリへのコピーなどで構成されます。

パッケージが復元されると、最初の 2 つのステップのみが実行されます。これが、プロジェクト ディレクトリ内の DLL が「復元」されない理由です。

現時点での唯一の解決策は、プロジェクト ディレクトリにある DLL をチェックインすることです。

于 2013-10-30T06:21:38.437 に答える