プロジェクトに.nuspecファイルがあり、サードパーティを参照していますDLLパッケージを含むプロジェクトが参照する必要があります。
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Locked against log4net 1.2 - less than 1.2.11 which has breaking changes</releaseNotes>
<copyright>Copyright 2012 blah blah</copyright>
<dependencies>
<dependency id="log4net" version="[1.2,1.2.11)" />
<dependency id="My.Other.Project" />
</dependencies>
<references>
<reference file="Third.Party.dll" />
</references>
.csprojと.nuspecファイルがあるディレクトリからnuget.exe pack My.Project.csprojを実行しようとすると、
無効なアセンブリ参照 'Third.Party.dll'。 「Third.Party.dll」という名前のファイルがlibディレクトリに存在することを確認します。
。\ lib。\ bin\Debug\lib。\ obj\libを作成しました
ファイルは3つの場所すべてにあります。それは本当にどこにlibフォルダーが必要ですか?
< references >要素は、パッケージのインストール時にプロジェクトに追加される参照を定義します。欠けているのは、< files >要素で実行される、パッケージの一部であるファイルを定義する部分です。したがって、.nuspecファイルは次のようになります。
<?xml version="1.0"?>
<package>
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Locked against log4net 1.2 - less than 1.2.11 which has breaking changes</releaseNotes>
<copyright>Copyright 2012 blah blah</copyright>
<dependencies>
<dependency id="log4net" version="[1.2,1.2.11)" />
<dependency id="My.Other.Project" />
</dependencies>
<references>
<reference file="Third.Party.dll" />
</references>
</metadata>
<files>
<file src="lib\Third.Party.dll" target="lib"/>
</files>
</package>
唯一の違いは、メタデータ要素の後のファイル要素です。
私は同じ問題を抱えていましたが、ここでそれを解決しました。私には奇妙に思われましたが、それはそれが機能するように見え、この方法でサードパーティのアセンブリ用のnugetパッケージを作成する必要はありません。
私の.nuspecは次のようになります。
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Some release notes</releaseNotes>
<copyright>Copyright 2012</copyright>
<tags>some,tags</tags>
<references>
<reference file="thirdparty.dll"></reference>
<reference file="ThisAssemblyName.dll"></reference>
</references>
</metadata>
<files>
<file src="web.config.transform" target="content"/>
<file src="lib\net40\thirdparty.dll" target="lib\net40"/>
</files>
</package>
ご覧のとおり-ファイルノードを追加して、サードパーティのdllをターゲットのlib\net40(私の場合)フォルダーにコピーする必要がありました。次に、thirdparty.dllと、このNuGetパッケージが作成するアセンブリの両方に「参照」ノードを追加する必要がありました。 Matt Wardの解shouldは正しいように感じますが、(冗長な)参照ノードを追加するまで機能しませんでした。
お役に立てば幸いです。
ありがとう
ムスタファ