2016-06-17 19 views
1

次の内容のNuget Package Explorerを使用して、Nugetパッケージを作成しました。複数のDLLを持つnugetパッケージ

lib 
    -- CPPLib.dll 
    -- DotNetWrapper.dll 

CPPLib.dllは(ネイティブC++で)論理の実装の主なライブラリであり、そしてDotNetWrapper.dllはC#プロジェクトで参照されるラッパーです。

私はこのnugetパッケージをインストールしようとすると、私はパッケージ内の「LIB」フォルダ内のすべてが、なぜネイティブCPPLib.dllを説明した資料としてインストールされます知っている次のエラー

Install failed. Rolling back... 
    Install-Package : Failed to add reference to 'CPPLib.dll'. 
    At line:1 char:16 
    + install-package <<<< -id MyPackage 
    + CategoryInfo   : NotSpecified: (:) [Install-Package], InvalidOperationException 
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand 

を得ましたC#プロジェクトにインストールすることはできません。

は、それから私は、その後のパッケージをインストールすることができ、この

content 
     -- CPPLib.dll 
    lib 
     -- DotNetWrapper.dll 

のようなパッケージに、「コンテンツ」フォルダにCPPLib.dllを移動しようとしたが、DotNetWrapper.dllを見つけることができないようプロジェクトがビルドしません。 CPPLib.dllは同じフォルダにあります。

この問題を回避するにはどうすればよいですか?どうにかしてlibフォルダにすべてを置いてパッケージからDotNetWrapper.dllだけを "公開"することは可能ですか?

+0

いや、あなたがそれらを混在させることはできませんの兄弟されています。 2つの別々のパッケージを作成する必要があります。 – Slobo80

答えて

0

あなたnuspecファイル内のファイルと参照で作業する必要があります。

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> 
    <metadata> 
     ... 
     <references> 
      <reference file="DotNetWrapper.dll" /> 
     </references> 
    </metadata> 
    <files> 
     <file src="bin\Release\DotNetWrapper.dll" target="lib" /> 
     <file src="bin\Release\CPPLib.dll" target="lib" /> 
    </files> 
</package> 

ので、あなたが「ファイル」であなたのパッケージに入れてファイルを定義し、追加するためにあなたの参照のみがラッパーであるnugetを伝えますDLLには "references"が含まれています。

Plsはこれらのタグは、異なるレベルであることは言う - 「メタデータ」の内部でなければならない「参照」が、「ファイル」は「メタデータ」

関連する問題