web-dev-qa-db-ja.com

プロジェクトの依存関係はどこに置けますか

コンピューターサイエンスの研究を終えたばかりで、今は働いています。問題は、私が会社で唯一のコンピューターサイエンティストであり、おそらく多くの悪い習慣を取っていることです。ある日チームで仕事をしなければならない場合は是正したいと思います。

この質問がこのコミュニティに属することを願っています。C++ Gitプロジェクトでは、どこに依存関係を置くのですか?

たとえば、GitHubにすべてをアップロードしなくても、誰もが同じバージョンの依存関係を持つことをどのように確認できますか?ダウンロードして使用した依存関係をすべての人に提供する必要がありますか、それとも、使用したものを知らせて、必要な方法でインストールしてもらう必要がありますか?

例をあげると、Visual Studioプロジェクトがあり、多くの依存関係を追加しましたが、それらは個人リポジトリにあります。だから私はそれらでVSを設定しました。それらをGitに置くと、構成は保存されますが、それは私自身の構成になります。このプロジェクトをどのように使用できますか?

5
Raph Schim

依存関係を配置する場所の決定は、まあまあです。これをc#で作成していて、NuGetを使用して共通言語ランタイムのアセンブリロード機能を自由に使用できたとしても、それは完全な結論ではありません。

C#プロジェクトでは、このコードが他の場所で使用されていないというだけの理由で、いくつかのNuGetパッケージからコードを直接ソリューションにコピーしています。コードの1行を変更し、パッケージ化、NuGetパッケージのプッシュおよびアップグレードに5分を費やすのは、あまりにも面倒です。私がanother1行のコードを変更します。

コードが1つのプロジェクトでのみ使用される場合は、c#、c、またはc ++を記述しているかどうかに関係なく、ソースが同じソリューション内にあるようにします(たとえ非常に汎用的で再利用可能であっても)。それを必要とする2番目のソリューションでは、コピーして貼り付けます。それを必要とする3番目のソリューションに遭遇した後でのみ、NuGetパッケージの構築を調査することをお勧めします。他の種類のコードをコピーするのと同じガイドラインです。適切な抽象化を識別するのに十分なユースケースがあることを確認してください。適切な抽象化を識別できる場合は、NuGetパッケージをビルドします。

十分なユースケースがあるまでは、コピーと貼り付けがより良い方法です。

1
Greg Burghardt

質問のコメントに従って、NuGetはあなたのためのソリューションになります... Visual Studioなしでそれを使用することができれば...まあ、できます!

より正確には、コマンドラインからNuget.exeを使用できます。 Visual Studioは必要ありません。 Nuget.exeは nuget.orgダウンロードリンク )からダウンロードできます。

:Nuget.exeは Mono を使用してLinuxおよびmacOSで動作します。

Visual Studioを使用しておらず、NuGetを使用したい場合は、Nuget.exeを呼び出して依存関係を取得するビルドシェルスクリプト(または使用しているビルド自動化ツールのファイル形式)をお勧めします。 Nuget.exeがパスにあるかどうかにかかわらず、問題は残ります。まあ、スクリプトからダウンロードすることもできます。

NuGet CLIリファレンス および nuget.exe CLIを使用してパッケージを管理する を参照してください。

1
Theraot