現在、いくつかのプロジェクトでソリューションを構築しています。
私たちはこのようなものを持っています:
- Common
- Logging
- Logging.NLog
- Threading
したがって、Logging.NLogは、Logging、Logging on Common ...などに依存しています。
Logging.NLogをパックするとき、nugetにLogginとCommonの依存関係を検出してもらいたいと思います。
現時点では、Commonを使用してパッケージを作成し、LoggingにCommonを使用してパッケージをインストールしました。
install-package Common
しかし、Commonに変更を加えるたびに、パッケージを更新する必要があり、それらは継続的インテグレーションシステム(Hudson)によって作成されるため、開発中はかなり面倒です。
単純にプロジェクト参照([参照の追加]-> [プロジェクト...])が必要で、nugetはとにかく依存関係を検出します。
それを達成する方法はありますか?
この正確なシナリオを対象とした計画された 機能 があります。
これは明らかにどのように見えるかです:
> nuget.exe pack proj.csproj -IncludeReferencedProjects
どうやら 実装 単なる日前ですが、 バグまだ存在アイロンがけアウト 。
この機能は、現在のところ、次のことを可能にします。
OR
機能リクエストは1.5までさかのぼりますが、スリップし続けました。ただし、最近では、 Nuget 2. でのリリースをスケジュールするのに十分な量(要求)が収集されました。
リリースプランは「2013年4月末」のバージョン2.3をペグしているので、しばらくお待ちください。
(現在、最新のNugetバージョンは2.2.1です)。
現在、あなたが求めることを正確に行う方法はありませんが、以下は更新を合理化するのに役立ちます。
ソリューションにnuspecファイルを追加する必要があるようです。次の3つのファイルのようなもの。次の2つの依存関係に注意してください。これらは、[$ version $]で一般的なものと同じdllバージョンを参照します。つまり、次のコマンドを実行すると、依存関係の角かっこには特定のバージョンの依存関係パッケージが必要になるため、3つすべてが更新されます。
PM>更新-パッケージ共通
Hudsonでは、nuget packコマンド( Nugetコマンドリファレンスを参照 )を使用してこれらのnuspecファイルを実行し、結果のパッケージをアーティファクトに含めて、ローカルのnugetサーバーに展開する必要があります。それはあなたにお任せします。
他に行う必要があるのは、すべてのアセンブリが同じビルドで同じバージョンを取得するようにすることです。繰り返しになりますが、Hudsonがこれを処理するか、一般的なAssemblyInfoファイルを使用できます。
Common.nuspec
<?xml version="1.0"?>
<package xmlns="http://schemas.Microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<version>$version$</version>
<authors>Charles Ouellet</authors>
<owners />
<iconUrl>http://domain/Content/images/LOGO_32x32.png</iconUrl>
<id>Common</id>
<title>Common</title>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>full description here</description>
</metadata>
<files>
<file src="..\Common\bin\Release\Common.dll" target="lib\net40" />
<file src="..\Common\bin\Release\Common.pdb" target="lib\net40" />
</files>
</package>
Logging.nuspec
<?xml version="1.0"?>
<package xmlns="http://schemas.Microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<version>$version$</version>
<authors>Charles Ouellet</authors>
<owners />
<iconUrl>http://domain/Content/images/LOGO_32x32.png</iconUrl>
<id>Logging</id>
<title>Logging</title>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>full description here</description>
<dependencies>
<dependency id="Common" version="[$version$]" />
</dependencies>
</metadata>
<files>
<file src="..\Logging\bin\Release\Logging.dll" target="lib\net40" />
<file src="..\Logging\bin\Release\Logging.pdb" target="lib\net40" />
</files>
</package>
Logging.NLog
<?xml version="1.0"?>
<package xmlns="http://schemas.Microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<version>$version$</version>
<authors>Charles Ouellet</authors>
<owners />
<iconUrl>http://domain/Content/images/LOGO_32x32.png</iconUrl>
<id>Logging.NLog</id>
<title>Logging.NLog</title>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>full description here</description>
<dependencies>
<dependency id="Logging" version="[$version$]" />
</dependencies>
</metadata>
<files>
<file src="..\Logging.NLog\bin\Release\Logging.NLog.dll" target="lib\net40" />
<file src="..\Logging.NLog\bin\Release\Logging.NLog.pdb" target="lib\net40" />
</files>
</package>
Charlesは、参照されたプロジェクトがNuGetパッケージの構築にも使用されている場合、NuGetがプロジェクト参照をパッケージの依存関係に自動的に解決することを望んでいると思います。
例:
これも私が探していたものですが、残念ながら現在サポートされていないことがわかりました。 NuGet 1.7で予定されている 作業項目 がありますが、これを処理する方法についてはまだ設計されていません。
このスレッドには良い提案があります: NuGetと複数のソリューション
基本的に、共通のコンポーネントを独自のソリューションに分割し、独自のリリースライフサイクルを使用します。