問題タブ [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.

0 投票する
0 に答える
48 参照

nuget - FrameworkAssemblies に追加する必要がある参照アセンブリの決定

私は現在、チームで使用しているライブラリをパッケージ化する作業を行っていframeworkAssembliesますが、nuspec ファイルのリストに関しては行き詰まりました。

FrameworkAssemblies は GAC にインストールされたアセンブリ専用であることを理解しています。問題は、プロジェクト (プロジェクト A と呼びましょう) が多くの GAC アセンブリを使用できることですが、別のプロジェクト (プロジェクト B) がプロジェクト A を参照すると、おそらくすべてのプロジェクト A の参照が必要になるわけではなく、場合によってはまったく必要ないこともあります。また、それらのいくつかを参照する必要がある場合もあります。

問題は、クラス ライブラリ プロジェクトのどの参照を追加する必要があり、どの参照を追加frameworkAssembliesすべきでないかをどのように決定するかということです。

私が見ているように、プロジェクトのすべてのクラスを調べて、このクラスを使用するときに誰かが追加する必要がある参照を確認することは合理的ではないため、最適ではない2つの可能性が残されています。およびframeworkAssemblyとしてのすべての参照または(b)何も追加しません。

0 投票する
0 に答える
157 参照

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 の上位バージョンとの間の依存関係を強制する方法はありますか?

ここではバージョン管理がうまくいっていないことがわかりました。しかし、それをすぐに修正できないと仮定してください。

0 投票する
2 に答える
772 参照

nuget-package - すべての既定の動作を使用するが、1 つの追加ファイルを追加する nuspec ファイルを作成します。

などからnuspecすべての情報を自動的に読み取り、packages.configすべての依存関係を構築するだけでなく、追加のファイルを 1 つだけ含むファイルが必要です。

これを行う方法はありますか?

たとえば、nuspecこれは私が望むほとんどのことを行うファイルです:

私のプロジェクトが 10 個のnugetパッケージを参照している場合、上記のnuspecファイルはそれを検出し、パッケージを一緒にパックするときにそれらを依存関係として追加します。

しかし、files要素を追加すると、他のナゲットの依存関係へのすべての自動リンクが停止します。

自動リンクがなければ、プロジェクトのすべての依存関係の 2 つのコピーを効果的に維持する必要があります。1 つはcsprojファイルにあり、もう 1 つはここにあります。

これを行う方法があるに違いない?! Nuspec を使用して、パッケージに 1 つの余分なファイルを追加したいだけです。

0 投票する
3 に答える
3003 参照

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 自体がプロジェクトから抽出する方法を知っている特別なプレースホルダー値の背後にある考え方であるはずでした。