問題タブ [nuget-spec]
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.
nuget - FrameworkAssemblies に追加する必要がある参照アセンブリの決定
私は現在、チームで使用しているライブラリをパッケージ化する作業を行っていframeworkAssemblies
ますが、nuspec ファイルのリストに関しては行き詰まりました。
FrameworkAssemblies は GAC にインストールされたアセンブリ専用であることを理解しています。問題は、プロジェクト (プロジェクト A と呼びましょう) が多くの GAC アセンブリを使用できることですが、別のプロジェクト (プロジェクト B) がプロジェクト A を参照すると、おそらくすべてのプロジェクト A の参照が必要になるわけではなく、場合によってはまったく必要ないこともあります。また、それらのいくつかを参照する必要がある場合もあります。
問題は、クラス ライブラリ プロジェクトのどの参照を追加する必要があり、どの参照を追加frameworkAssemblies
すべきでないかをどのように決定するかということです。
私が見ているように、プロジェクトのすべてのクラスを調べて、このクラスを使用するときに誰かが追加する必要がある参照を確認することは合理的ではないため、最適ではない2つの可能性が残されています。およびframeworkAssemblyとしてのすべての参照または(b)何も追加しません。
nuget - Nuget: ツリー内のバージョン依存関係
Nuget パッケージを作成しています。これを A と呼びましょう。
A は B バージョン 4.3 [4.3.0、4.4] に依存しています。
B は C バージョン 4.0 [4.0.0,4.1) に依存しています。
A は、C のわずかに新しいバージョン [4.0.8,4.1) に依存しています。
パッケージ A がビルドされると、B が C に依存していることを識別し、C の最新リリースに依存関係を適用しないことを決定します。そのため、A を製品にプルすると、リポジトリから C バージョン 4.0.0 が導入されます。
A と C の上位バージョンとの間の依存関係を強制する方法はありますか?
ここではバージョン管理がうまくいっていないことがわかりました。しかし、それをすぐに修正できないと仮定してください。
nuget-package - すべての既定の動作を使用するが、1 つの追加ファイルを追加する nuspec ファイルを作成します。
などからnuspec
すべての情報を自動的に読み取り、packages.config
すべての依存関係を構築するだけでなく、追加のファイルを 1 つだけ含むファイルが必要です。
これを行う方法はありますか?
たとえば、nuspec
これは私が望むほとんどのことを行うファイルです:
私のプロジェクトが 10 個のnuget
パッケージを参照している場合、上記のnuspec
ファイルはそれを検出し、パッケージを一緒にパックするときにそれらを依存関係として追加します。
しかし、files
要素を追加すると、他のナゲットの依存関係へのすべての自動リンクが停止します。
自動リンクがなければ、プロジェクトのすべての依存関係の 2 つのコピーを効果的に維持する必要があります。1 つはcsproj
ファイルにあり、もう 1 つはここにあります。
これを行う方法があるに違いない?! Nuspec を使用して、パッケージに 1 つの余分なファイルを追加したいだけです。
nuget - Nuget パックは、アセンブリ バージョンの桁数を尊重しません
3桁のみのパッケージバージョンを生成する必要がありnuget pack
ます(セマンティックバージョニングを行いたい)が、AssemblyVersion
属性が「1.0.0」に設定されているcsprojで呼び出すと、結果のnupkgファイルはバージョン「1.0」で終了します.0.0" がメタデータ (およびファイル名) に含まれています。AssemblyVersion
コマンド ライン ツールが、属性で指定された桁数を受け入れないのはなぜですか?
nuget spec
これは、このようなスタブ nuspec ファイルを生成する csproj ファイルに対する呼び出しから開始しました(実際には、プレースホルダー値を持つタグがさらに含まれていますが、必要ないため削除しました)。
この nuspec ファイルを TFS で csproj ファイルと同じフォルダーにチェックインすると、次のように pack を呼び出すことができます。
プロジェクトの AssemblyInfo.cs ファイルには、バージョンを明示的に設定する行が含まれています。
ツールがアセンブリ バージョンを取得するときに 4 桁を使用しているという事実を除いて、すべて問題なく動作しています。ファイルエクスプローラーでdllを右クリックして詳細に移動すると、Windowsでもバージョンが3桁しか表示されません。NuGet が 4 桁を使用するのはなぜですか? 私はおそらく明らかな何かを見逃していますか?
nuspec でバージョンをハードコーディングすることは、明らかに理想的ではありません。これは、バージョン番号が常に同じであることを意図しているにもかかわらず、2 つの異なる場所でバージョン番号を維持する必要があるためです。$version$
つまり、これは、NuGet 自体がプロジェクトから抽出する方法を知っている特別なプレースホルダー値の背後にある考え方であるはずでした。