ここでいくつかの質問を取り上げます...まず、NuGetを使用すると、いくつかのDLLからパッケージを作成できますか?ビジュアルスタジオプロジェクトはありません。コマンドラインといくつかのプリコンパイルされたDLL=ファイル。
第二に、それが可能だと仮定すると、なぜ「libフォルダーの外にアセンブリ」という警告が連続して表示されるのですか?関連するアセンブリを取得して、NuGetパッケージ内の参照として自分自身を追加するために、考えられるすべてを試しました。
私のファイル構造は次のようになります
Root
- File1.dll
- lib
- File2.dll
- File3.dll
NuGetにこのような.nuspecを使用してパックするように指示すると
<?xml version="1.0"?>
<package >
<metadata>
<id>File1.dll</id>
<version>1.0.0</version>
<authors>thisguy</authors>
<owners>thisguysmom</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>This is some library</description>
<releaseNotes>Porting to NuGet</releaseNotes>
<copyright>Copyright 2012</copyright>
<references>
<reference file="File2.dll" />
<reference file="File3.dll" />
</references>
</metadata>
</package>
その警告が表示されます。私が読んでいるものから、libフォルダアイテムが参照として自動的に追加されるため、プロジェクトの参照ノードを定義する必要さえありませんか?
そこにいる誰かがこのNuGetの混乱を理解していますか?
参照するDLLはすべてlibフォルダーの下にある必要があります。この警告は、file1.dllがlibの外部にあり、パッケージのインストール中に無視されるためです。 (他の特別なフォルダーは「コンテンツ」と「ツール」です)
私はこの構造を使用していました:
Root
- lib
- File1.dll
- File2.dll
- File3.dll
詳細については、 http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#Package_Conventions を参照してください。
私はちょうどこの問題に出くわしました。 Nugetは次のような構造を想定しています。
root
- lib
- net40
- File1.dll
- File2.dll
- File3.dll
.netバージョンに応じて、net40またはnet20またはnet45。
走る
nuget pack yourlibrary.nuspec
パッケージ化する。
それは、ホールセールをまとめてnupkgに入れます。エラーメッセージはその時点で消えます。
この投稿の時点で最新のNuGetのバージョン(およびそれ以降のバージョンも同様)では、.nuspecファイルと一緒に.csprojファイルを使用してパッケージを作成できます。私たちがやったのは、.nuspecファイルを作成し(nuget仕様を使用してからカスタマイズする)、プロジェクトに含めることでした。
カスタマイズされた.nuspecファイルでは、次のコマンドを使用しました。
nuget pack sample.csproj -IncludeReferencedProjects
その時点で、.nupkgを構築し、問題を発行しませんでした。 .nupkgファイルは、通常の出力フォルダー(デフォルトでは、bin\debug)に表示されました。
Nuspecファイルのタグ内に以下を追加することにより、別のDLLへの参照を追加できます。
<package>
<metadata>
...
</metadata>
<files>
<file src="..\ReferencedFolder\*.*" target="lib\net40\" />
</files>
</package>
Alexandreは、NuGetパッケージを作成するときに作成される「lib」フォルダーを指します。 Zipファイルと同じように、.nupkgを開くことができます。そこには、lib\netXXフォルダーが表示されます。XXは、ターゲットとする.NETフレームワークのバージョンです。したがって、NuGetファイルをパックするときは、File1.dllがlibフォルダー内にあることを確認してください。
.NETのbin\debugまたはbin\releaseフォルダーに含まれることにより、「lib」フォルダーに入ります。したがって、プロジェクトをコンパイルして外部DLLのローカルをコピーし、コンパイル時にそれらをbinフォルダーに含める必要があります。
依存関係またはライブラリが変更されている場合、古いファイルはパッケージング操作に影響します。
obj
およびbin
フォルダーを削除します。dotnet restore
nuget pack yournuspecfile.nuspec -properties Configuration=Release -IncludeReferencedProjects
またはコマンドは何でも。Von Lemongargle教授のソリューションを使用しましたが、私にとっては素晴らしいソリューションでした。重要:
これはVisual Studio 2012で完全に機能します。