39

私が取り組んでいるソリューションには、4 つのクラス ライブラリ プロジェクト ( ABC)が含まれていますD。ソリューションの最上位プロジェクトと見なすことができますAB両方AB参照C、 とD単独。

これら 4 つのプロジェクトは、自動化されたワークフローを処理するために私が作成した一連のサービスを表しています。それらはすべて密接に関連しており、1 つの場所 (サービス マネージャー) でのみ使用されるため、異なるソリューションに分割したくありません。

私の問題は、4 つのライブラリすべてを含む単一の NuGet パッケージを作成し、すべてをビルドして DLL を手動で収集する必要がないことです。A残りのプロジェクトのいずれかまたは参照を使用することで技術的にこれを達成できることはわかっていBますが、それは本当の関係ではなく、避けるべきだと感じています。

この問題について多くの検索を行いましたが、手動で DLL を収集して自分でパッケージをビルドする以外に解決策が見つかりません。NuGet の機能/能力を使用して必要な結果を達成する方法はありますか?

: タグで明確にならない場合のために、私は現在、TeamCity ビルド サーバーで VS2010 を使用しています。関連する場合に備えて、Stash サーバーを介して Git も使用しています。

編集:これは言及するのに十分重要かもしれないことに気づきました。これらのプロジェクトは、依存関係としてマークする必要がある他の NuGet パッケージを参照しています。

4

5 に答える 5

24

独自の nuspec マニフェストを定義する必要があります。含まれているアセンブリをfilesセクションに一覧表示できます。

<file src="A\bin\Release\A.dll" target="lib\net40" />
<file src="B\bin\Release\B.dll" target="lib\net40" />
...

詳細については、NuSpec リファレンスを参照してください。

次に、proj の代わりに NuPack ビルド ステップでその nuspec ファイルを参照します。

于 2013-04-09T07:57:53.340 に答える
1

これはおそらくこれを正確に解決します: nuget.exe pack proj.csproj -IncludeReferencedProjects

あなたが見ることができます: 複数のプロジェクトを持つソリューションのナゲットパッケージを作成する

于 2016-11-07T10:37:18.580 に答える
0

VS に複数のプロジェクトがあり、Pack ファイルが別のプロジェクトに依存している場合は、両方をパックする必要があります。最初に依存関係をパックしてから、プロジェクトをパックします。NuGet パッケージ マネージャーを使用してパッケージを追加するときは、ソースが nuget.org ではなく、テスト フォルダーであることを確認してください。両方を Nuget.org にアップロードしていない限り。 NuGet パッケージの .nupkg ファイルをローカルにインストールするにはどうすればよいですか?

于 2021-04-14T19:10:34.537 に答える