2016-03-17 26 views
7

私たちはビジュアルスタジオプロジェクトのためにナゲットを試しています。しかし、私たちは自分たちの外部参照のためだけに(あるいは少なくとも主に)ナゲットを使用し、それらをローカルリポジトリ(ネットワーク共有)に格納します。私が知りたいのは、デバッグ/リリースの状況全体をどのように処理するかです。nugetパッケージのデバッグとリリースローカルリポジトリ

コンクリート(簡体字)状況:

我々は、我々は自分自身を開発した2つの共有コンポーネントへの参照を持っている主なプロジェクトを持っています。これらの共有コンポーネントは、当社の他の製品でも使用されています。

ビルドサーバー(tfs 2015ビルドタスク)でメインプロジェクトをビルドすると、プロジェクトのデバッグバージョンとリリースバージョンがビルドされます。しかし、外部リファレンスごとに1つのナゲットパッケージしか指定できません。

デバッグビルド中にデバッグバージョンの共有コンポーネントを使用し、リリースビルド中にリリースバージョンを使用するために達成したいこと。しかし、これらは(私が知る限り)実際には異なるパッケージです。

この問題を解決する方法は何ですか。たとえば、リリースとデバッグの両方のバージョンを1つのナゲットパッケージに含める方法はありますか?異なるビルド構成設定に異なるナゲット構成を使用することは可能ですか?

私はBest practices with Nuget: Debug or Release?を見つけましたが、このトピックでは実際に問題は解決していません。このスレッドは、デバッグバージョンまたはリリースバージョンをリモートサーバーに公開するかどうかの議論です。両方を公開し、両方を使用したいが、ローカルサーバー上でのみ使用したい。私たちは図書館を世界中の人々と共有するつもりはありません。

答えて

1

NuGetパッケージは、通常、特定のターゲットフレームワーク用のアセンブリを1セットだけ保持します。他のユーザーが使用するようにNuGetパッケージを公開しているので、実際にはデバッグとリリースのバージョンを出荷するようには設計されていません。通常、エンドユーザーにはアプリケーションのデバッグ版とリリース版を公開しません。

NuGetパッケージのcustom MSBuild .targets fileを独自の参照情報と構成情報を使用して回避することができます。この.targetsファイルは、プロジェクトの拡張機能として使用できます。プロジェクトに定義されている設定に基づいて必要に応じて参照を定義できるようにインポートされます。理想的ではありませんが、うまくいくはずです。

+0

これは、私たちの状況では、ナゲットが行く方法ではない可能性がありますか?このような種類の共有コンポーネントをプロジェクトに組み込むために、ナゲット以外のアプローチはありますか?他の人はどのようにこれを達成するのですか?私たちはこの状況の最初の会社ではないと確信しています – PaulVrugt

+0

はい、NuGetはあなたにとって良い方法ではないかもしれません。おそらく、ネットワーク共有はデバッグとリリースのビルドでも機能するため、変更する必要はないかもしれません。 –

+2

同じ問題を抱えている人がもっといないのは本当にわかりません。私は多くの企業にとって非常に一般的だと思う状況を描いてきました。他の企業は、外部ライブラリを使ってビルドサーバーを構築するにはどうすればよいですか?ナゲットを使用する利点は、tfs2015ビルドタスクビルドですぐに動作し、参照のバージョンが手動で更新されるまで同じになることです。私たちがナゲットから離れると、この利点は失われます。 – PaulVrugt

関連する問題