問題に入る前に、私の目標を簡単に説明しましょう。
構築する各 Web サイトに使用するテンプレート プロジェクトがあります。これには、基本クラス、共通ページ (お問い合わせなど)、便利なユーティリティ (例外ログ) などが含まれます。このテンプレートを再利用可能で更新可能にしたいと考えています。以前は Visual Studio プロジェクト テンプレートを使用していましたが、必要なすべてのアセンブリを参照する際に問題があったため、Nuget に目を向けました。これは簡単で、追加のメリットもあるという印象を受けました。
問題:
パッケージ内のすべての参照 (ソリューション内の他のプロジェクトとローカル コンピューター上の dll の両方) を含む nuget パッケージを作成し、このテンプレートをインストールする子プロジェクトでそれらを依存関係にする方法がわかりません。
これは私が得た距離です:
a. プロジェクトのnuspecファイルには、次のものがあります。
<references>
<reference file="AjaxControlToolkit.dll" /> <!-- nuget dependency -->
<reference file="BjxContacts.Shared.dll" /> <!-- project dependency -->
<reference file="SomeExample.exe" /> <!-- exe local file dependency -->
<reference file="SomeOther.dll" /> <!-- dll local file dependency -->
</references>
<files>
<file src="bin\*.pdb" target="lib" />
<file src="bin\*.dll" target="lib"/>
<file src="bin\*.exe" target="lib"/>
<file src="bin\*.xml" target="lib"/>
</files>
b. pack コマンドを実行するときは、nuget pack {projectname}.csproj - IncludeReferencedProjects -Symbols を使用します。
c. 出力は 2 つの別個のプロジェクトであり、1 つは .symbols を含み、もう 1 つは含まず、パッケージ エクスプローラーでは次のように表示されます。
ですから、この時点では、すべてを正しく行っているように感じます。しかし、Visual Studio で新しい空の Web アプリケーションを作成し、このパッケージをインストールすると、これらの参照されたアセンブリまたはプロジェクトはいずれも参照の下に含まれません。
d. Visual Studio の新しい (子) プロジェクトで:
ここで完全なレンガの壁にぶつかりました。私は何日もウェブを検索してきましたが、役に立ちそうなものをたくさん見つけましたが、行き止まりになりました。
- https://github.com/dittodhole/powershell-nuget-packager
- 参照された依存関係を含む NuGet パッケージを自動的にビルドする
- NuGet のパッケージ化と dll の参照
- パッキング時に nuget に参照プロジェクトが含まれないのはなぜですか?
どこが間違っていますか?
更新
.net451 フォルダーに、すべての外部プロジェクト参照が追加されます。ただし、WebApplication のスクリーンショットでわかるように、これらの参照も追加されていません。
(ソース: blabberjax.com )