5

Nuget は初めてで、作成した別のポータブル クラス ライブラリにパッケージ依存関係を持つポータブル クラス ライブラリ プロジェクト用の NuGet パッケージを作成しようとしています。

プロジェクト ファイルTestComponent2.csprojのnuget パックを呼び出すときにエラーが発生するという問題が発生しています(VS 2013 の Portable for Universal Apps テンプレートから作成しました)。このライブラリは、 TestComponent1という別の PCL から作成された nuget パッケージに依存しています。

作成されたパッケージには、この依存関係が含まれていないようです (コンソール出力には、「依存関係: なし」とさえ表示されます)。ただし、 TestComponent2プロジェクトの packages.config ファイルには、依存関係が確実にリストされています。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="TestComponent1" version="1.0" targetFramework="portable-win81+wpa81" />
</packages>

したがって、私の状況では、TestComponent2.csproj と packages.config を含むフォルダーから、TestComponent2.csproj と packages.config を含むフォルダーから、冗長性をオンにして、TestComponent2 というプロジェクトのコマンド ラインから次のコマンドを呼び出しています。

> nuget pack TestComponent2.csproj -Verbosity Detailed

警告: 「TestComponent2.dll」からメタデータを抽出できません。警告: System.IO.FileNotFoundException: ファイルまたはアセンブリ 'System.Runtime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。ファイル名: 'System.Runtime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ---> System.IO.FileNotFoundException: ファイルまたはアセンブリを読み込めませんでした 'System.Runtime, Version=4.0.10.0, Culture =neutral, PublicKeyToken=b03f5f7f11d50a3a' またはその依存関係の 1 つ。システムは、指定されたファイルを見つけることができません。ファイル名: System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase,

...

ファイル「mypath\TestComponent2.dll」を「lib\portable-win81+wpa81\TestComponent2.dll」としてパッケージに追加します

packages.config が見つかりました。依存関係としてリストされているパッケージの使用
警告: 説明が指定されていません。「説明」を使用します。
警告: 著者が指定されていません。「私の名前」を使用します。

Id: TestComponent2
バージョン: 1.0
作成者: myname
説明: 説明
依存関係: なし

ファイル「lib\portable-win81+wpa81\TestComponent2.dll」を追加しました。

パッケージ 'mypath\TestComponent2.1.0.nupkg' が正常に作成されました。

最初にnuget 仕様を呼び出すと、次のエラーも表示されます: 警告: 'TestComponent2.dll' からメタデータを抽出できません。メタデータに「TestComponent2.nuspec」を使用します。置換トークン「タイトル」には値がありません。

新しいユニバーサル PCL 用のパッケージを作成する nuget に問題はありますか? それとも、設定が間違っているのでしょうか?Nuget 2.8 を使用しています。

4

2 に答える 2

6

NuGet 2.8 にバグがあり、PCL アセンブリからのメタデータの読み取りに失敗しているようです。

古いバージョンの NuGet を試すことをお勧めするつもりでしたが、残念ながら、2.8.1 以降でのみサポートされている Windows Phone アプリケーション ターゲット (wpa) を使用しているため、2.8.1 が必要だと思います。

回避策は、プロジェクト ファイルを使用する代わりに、nuget pack YourNuSpecFile.nuspecを使用することです。ただし、これを機能させるには、.nuspec にさらに情報を入れる必要があります。

于 2014-05-15T13:23:16.767 に答える