問題タブ [refix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NET で依存関係ツリーを管理する最良の方法は何ですか?
前回のプロジェクトでは、MSBuild をスクリプト言語として使用しました。(ええ、本当に!) また、C# でより意味のある部分のために、何百ものカスタム MSBuild タスクを作成しました。(MSBuild タスクのボイラープレート コードを生成する MSBuild タスクも作成しました。はい、それ自体を消費しました。)
他の人がこの同じアプローチを取ることはお勧めしませんが、私が非常に役立つと思ったものの 1 つは、組み込みの依存関係管理です。ご想像のとおり、依存関係を表現するのは簡単で、MSBuild に依存関係を満たすように任せることができました。たとえば、ソフトウェアのほぼすべてのステップで、特定のファイル セットを特定の場所にコピーする必要がありました。あなたは簡単に書くことができます:
を実行するStep2
と、ファイルが一度だけコピーされます。
依存関係ツリーを構築して満たすことは、ソフトウェアではかなり一般的です。MSBuild チームが依存関係管理コードを取得し、MSBuild から分離して、誰もが使用できる .NET Framework に移動してくれることを願っています。それをむき出しにして、この方法で依存関係を管理するための最良のオプションは何だと思いますか?
c# - 外部ライブラリを .Net プロジェクトにどのようにパッケージ化しますか?
私のプロジェクトの多くには、Castle/NHibernate/Rhino-Tools スタックが含まれています。これについて紛らわしいのは、Castle がいくつかの NHibernate ライブラリに依存し、NHibernate がいくつかの Castle ライブラリに依存し、Rhino-Tools が両方に依存していることです。
3 つのプロジェクトすべてを自分のマシンでビルドしましたが、NHibernate と Castle のビルドから得られたライブラリを使用して Rhino-Tools をビルドしたので、NHibernate/Castle ライブラリをコピーするのは少し冗長だと感じています。
現在、プロジェクト ツリーの / thirdparty/libs フォルダー内の個別のフォルダーにすべてのプロジェクトを含めています。プロジェクトに / thirdparty/libs/rhino-tools を配置して、そこから Castle/NHibernate ライブラリを使用するだけでよいのでしょうか? ファイルを複製しないことは理にかなっているように思えますが、各プロジェクトを個別のフォルダーに配置することも好きです。
これについてどう思いますか。
.net - NexusやArtifactoryのようなJavaアーティファクトリポジトリの.NET代替品はありますか?バージョン管理されたDLLはどこに保存しますか?
チームシステムでの自動ビルドに必要なバイナリをどこに保存しますか?それらをコードと一緒にSCMまたは他の場所に保存していますか?SCMに大量のバイナリがあると、ソースコントロールでパフォーマンスの問題が発生しますか?
リリースされたバージョンのバグを修正するには、一部の外部ライブラリの以前のバージョンに戻すことができる必要がありますが、バージョンには互換性がありません。分岐でうまくいきますが、コードと一緒にバイナリを格納するのはアンチパターンだと思います。
どんな提案でも大歓迎です。
visual-studio-2008 - すべてのライブラリとdllが同じビルドからのものであることを確認しますか?
私はVSC++2008でプログラムを開発しています。
現在、dllとlibの依存関係の膨大なリストがあり、さらにいくつか追加しています。ソースからビルドして依存関係を更新する必要がある場合(ビルドされたdllとlibを正しい場所に手動で置き換える必要がある場合)、誤って何かを置き換えるのを忘れた場合、またはその逆の場合、コンパイルに遭遇する可能性があります。または実行時の問題。そして、どの場所がうまくいかないかを見つけるのは少し難しいかもしれません。
それで、多くの更新依存関係を持つプログラムの構築を容易にするために、このタスクに適したある種のプログラムまたはメソッドがありますか?
c# - .NET アセンブリ参照 101
アセンブリ A に次のクラスがあります。アセンブリには StructureMap 2.6.1 への参照があります。
まったく別のアセンブリ (B) でアセンブリ A を参照しています。この行が呼び出されると、次のランタイム エラーが発生します。
実行時エラーは次のとおりです。
FileNotFoundException: ファイルまたはアセンブリ 'StructureMap、Version=2.6.1.0、Culture=neutral、PublicKeyToken=e60ad81abae3c223' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
StructureMap.dll をアセンブリ B の bin ディレクトリに常にコピーする必要があります。これは非常に面倒です。これを解決する方法について何か提案はありますか? AssemblyA によって参照されるアセンブリが AssemblyB によって必要とされる時期に関する一般的なルールを知っている人はいますか?
ありがとう!
素早い返信ありがとうございます。StructureMap を参照として単純に追加することを考えました。しかし、私が設計で目指していた角度は、基盤となる実装を消費者から切り離すことでした。つまり、アセンブリ B は、StructureMap が最終的に使用されているという事実を認識しません。また、GAC StructureMap を使用すると、展開の問題が発生しますよね? グローバル キャッシュに StructureMap を持たないホスト マシンにサイトをデプロイすると、振り出しに戻ります。このアセンブリ参照の問題を考えると、真の抽象化がどのように実現されるのか興味があります。
dependencies - バージョン管理におけるマルチモジュール ソース プロジェクトの宣言的な依存関係の処理
多数のモジュールで構成される多数の製品があり、その一部は一部の製品間で共有されています。それらは、いくつかのバージョン管理リポジトリに分散しています。
製品は、すべてのモジュールをチェックアウトし、正しい順序でビルドする責任を持つマスター Ant スクリプトによってビルドされます。モジュールには独自のリリース サイクルはありません。
さて、私は宣言的な依存関係管理に行きたいと思っていますが、すべてのソリューション (Maven、Ivy) は、バージョン管理下のソース コードではなく成果物に依存しているようです。アーティファクトに頼ると大変なことになるから、やめたほうがいい。Ivy のようなものが欲しいのですが、私の製品はモジュール foo、bar、および baz (ブランチ 2.0) に依存しており、1 つまたは複数のソース コード マネージャー (構成で指定) からソース コードをチェックアウトして、フラットなワークスペース。
ビルドにgradleを使用する予定なので、それに合うソリューションをいただければ幸いです...
.net-3.5 - タイプを読み込めませんでした''アセンブリから''
今日、いくつかのコードを変更することにしましたが、意味のないエラーが発生しました。と呼ばれるインターフェースとIDatabase
、それを継承すると呼ばれるクラスがありますDatabase
。もともとIDatabase
はと同じアセンブリを入れただけですが、アセンブリ全体がないとDatabase
他の人が新しいタイプを作成できなくなるため、これは好きではありませんでした。IDatabase
IDatabaseをと呼ばれる新しい別のアセンブリに移動LibraryInterfaces
し、プロジェクト内のすべての参照を変更しました。
プロジェクトは正常にコンパイルされますが、実行すると次のエラーが発生します。
IDatabase
の定義をLibraryInterfaces
!に移動したので、これは私には意味がありません。実行元のフォルダー内のファイルを再確認しましたが、ファイルは正しいです。すべての参照を再確認するために、Reflectorでそれらを開いただけで、それらも正しいです。また、ステートメントを削除し、using
のすべての使用法を完全に修飾しましたがIDatabase
、それでもうまくいきませんでした。
この問題を修正するためのヒントはありますか?