web-dev-qa-db-ja.com

nugetパブリッシングのための関連プロジェクトと依存関係の整理

私は、Airbrakeのようなエラーおよびメッセージレポートサービスである Rollbar の.NETバインディングの作成に取り組んできました。私のライブラリは正常に機能しており、NuGetギャラリーで公開されています。

だから今、私はそれを次のレベルのユーザビリティに持っていき、これのために NLog Extension を実装したいと思います。これには、1画面分のコードを記述し、NLogライブラリを参照する必要があります。ラッパーです。 Log4Net用に実装することもできます。

この時点で、これをどのように整理し、ソース管理とnugetで管理するかについては、すでにぼやけています。確かなことの1つは、個別のnugetパッケージがあるため、不要な依存関係をインストールする必要がないことです。

私の質問は次のとおりです。

  1. ベースライブラリ、NLog拡張機能、Log4Net拡張機能用に個別のgitリポジトリを作成する必要がありますか?ビルドプロセスなどが明確に分離されているため、変更を追跡する方が簡単なようです。それはプロジェクトへの貢献をより簡単にするかもしれません...しかし、私にはわかりません。

  2. ロールバーベースライブラリを拡張ライブラリの依存関係として参照する必要がありますか、それともILMergeで参照する必要がありますか? ILMergeの利点は、ユーザーは1つの参照とDLLしか必要としないことです。奇妙な部分はバージョン管理です。ベースライブラリのみが変更された場合、または拡張機能のみが変更された場合に意味のあるバージョン番号を設定する方法など。また、nugetはインストール済みパッケージの依存関係の更新を一覧表示せず、パッケージ自体のみを一覧表示するようです。ユーザーがインストールする必要があるアップデートとして、ベースライブラリのアップデートをバブルアップさせたいです。そのための1つの方法は、拡張機能をバージョンバンプし、依存関係ライブラリのバージョンを設定することだと思います。

これは、オープンソースライブラリを作成して公開し、管理する私の最初の試みです。私はそれを正しくすることができるようにこれに対処した人々からのいくつかのフィードバックが大好きです!

私はビルドプロセスにその価値があるため、Albacoreを使用しています。

(現在のコード: https://github.com/mroach/RollbarSharp

3
mroach

私には役に立たない小さなDLLを大きなパッケージの一部として含めてもかまいませんが、それを含めたくありませんそしてNLogなので、log4netでRollbarを使用できます。

したがって、それらをメインパッケージに含める場合は、パッケージをセカンダリ製品に依存させないでください。依存していないからです。 Rollbarを使用するのにNLogは必要ありません。ただし、これは、NLogのすべてのバージョンをRollbarと一緒にインストールできることを意味します。つまり、互換性のないバージョンを選択すると、うんざりします。

Nugetには、他の2つをリンクし、名前を組み合わせたオープンソースプロジェクトがたくさんあります。たとえば、Rollbar.NLogを使用すると、検索時にRollbarの横に表示されますが、含めるかどうかを選択できます。

このオプションを選択すると、依存関係のバージョンを設定して、バージョン番号を独立させることができます。たとえば、Rollbar.NLog v1.2には、Rollbar v1.x( 依存タグ がnuspecファイル(id="Rollbar" version="[1.1,1.2)")に必要)があり、2つのパッケージを個別にアップグレードする許可を与えたとします。どちらもv2.xにアップグレードされている限り。

Rollbar.NLogパッケージがある場合は、NLogに依存させる必要があります。 NLogのバージョン管理に自信を持つことができる場合(たとえば、メジャーバージョンが変更されない限り、常に下位互換性があります)、それでも私に自由を与えてください。しかし、そうする必要はありません。 id="NLog" version="[3.2.1]"を指定できます。そうすることで安全になりますが、柔軟性は低下します。私のNLogアップグレード戦略は、リリース戦略に関連付けられています。

3
pdr