ソースコードアクセスを使用した社内NuGetパッケージの管理


20

社内のプロジェクトを共有したい社内ライブラリがたくさんあります。これらはいくつかの要件です:

  • ライブラリソースは、エンドプロジェクトから分離されたリポジトリに保存されます
  • 終了プロジェクトには、NuGetを介したライブラリが含まれます
  • エンドプロジェクトでの作業中に、任意のライブラリのソースコードを簡単に検査できる必要があります

プライベートNuGetリポジトリの設定は問題ではありませんが、ソースの管理は問題です。私たちは、ソースサーバを経由してソースを公開しようとしましたが、それはちょっとあなたが定義/実装に移動しようとすると、外部コードのデバッグ中にVSは、ソースをダウンロードし、ではない:作品ではなく、かなり。基本的に、デバッグ時にのみソースコードにアクセスできますが、これは必要なものではありません。

したがって、質問は次のとおりです。

  • 同じレポ/ソリューションにコードを入れる必要なく、内部ライブラリのソースコードへのアクセスを提供する方法が存在します
  • VSがデバッグだけでなくナビゲーションにもシンボルを使用するように、Symbolサーバー/ NuGetフィードコンボを設定する方法はありますか?

ReSharper /その他のアドインの使用はオプションです。


2
内部プロジェクトの管理に最適ではないNugetの使用が見つかりました。最終的には、プロジェクトとDLLの参照を優先して削除しました。この作品を作ることができた誰かから聞いてみたいです。
ロバートハーベイ

NuGetパッケージに含まれているdllに対応するpdbファイルのシンボルサーバーも設定しましたか?
ラバーダック

3
私の現在の職場でもまったく同じ設定をしています。NuGetサーバー(PDBのない DLL 含む)とシンボルサーバー(DLL、PDB、およびソースを含む)。また、同じ問題があります(ソースとPDBはデバッグ時にのみ取得されます)。@RobertHarvey:NuGetパッケージマネージャーは、貧弱なNuGetクライアントです。直接依存関係と一時依存関係を区別せず、愚かな「統合」アクションが必要です。Paketに切り替えて以来、振り返ることはありませんでした。これにより、パッケージ管理が健全で耐えやすくなり、快適になりました。
アロングラネク16

2
質問する必要があります-これは不合理な要件ではないと思いますが、なぜ共有/共通パッケージを見ることができる必要があるのですか?概念的には、少なくともこれらはブラックボックスとして文書化する必要があり、中身を調べる必要があるのは標準ではなく例外です。いずれにせよ、それらはソースリポジトリで利用できるため、検査するソリューションをダウンロードするのは許容できるほど簡単なはずです。これまたはその一部が完全に当てはまらない理由はいくつもありますが、それでも質問する価値があります。
マーフ

4
@Murph-私はOPではありませんが、私の経験では、ドキュメントは私が望む詳細をキャプチャしません。この状態をクリーンアップする必要がありますか、それとも呼び出し先になりますか?これは正確に何ですか?これらのオーバーロードはどのように異なりますか?これらのエンティティは平等をサポートしていますか?サポートしている場合、何に基づいていますか?この呼び出しのおおよその複雑さは何ですか?持っている価値のある唯一の詳細なドキュメントは、(クリーンな)ソースです。これ、ドキュメンタが決して考慮しなかった、あなたにとって重要なこと常に一般的に行われるからです。さらに悪いことに、複雑なドキュメントには必然的にエラーが含まれ、古くなっています。
イーモンネルボンヌ

回答:


1

動作するはずは、NuGetパッケージのソースコードをチェックアウトし、Visual Studioの別のインスタンスでソリューションを開くだけです。

Visual Studioには、参照したものを処理することにより、開いているインスタンスのコードを切り替えるという巧妙なトリックがあります。デバッグ中にこれが初めて起こったのは、啓示でした。

直面する主な問題は、依存パッケージのチェックアウトされたコードが、メインプロジェクトのNuGet参照と同じバージョンを表していることを確認することです。パッケージの最新バージョンに対して常にビルドするというポリシーに従えば問題ありません。

このアプローチのもう1つの利点は、パッケージを変更する必要がある場合、そこで変更を加えることができることです。


2
これがどのように機能するかについての追加の詳細を提供できますか?あなたが私のために説明した方法では機能しません。パッケージにPDBを含める必要がありますか?追加のトリックはありますか?
-Dyppl

-1

たぶんhttps://github.com/GitTools/GitLinkを使用できます。リポジトリを指すリンクをpdbファイルに追加して、Visual Studioがそこからソースコードを取得するようにします。そして、nuspecパッケージにpdbファイルを含めるだけで、ソースサーバーは必要ありません。


1
ただし、デバッグ以外でも機能しますか?見た目は似ていません。
Dyppl

-1

したがって、これは完全なソリューションではありませんが、オプションでResharperを使用できると述べています。dotPeekとresharperを使用すると、元のコードの逆アセンブリに移動できます。これは、私が職場で使用しているもので、お客様のコードと同様のセットアップがあります。

あなたが言及したSymbol Serverの組み合わせを見つけ、通常は逆アセンブリを閲覧するだけで何が起こっているのかを把握できます。

お役に立てば幸いです。

編集:質問を読み直して、ソースコードを閲覧できるように具体的にお願いしていることに気づきましたが、そうではありません。それにもかかわらず、うまくいけばそれは誰かに役立つでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.