构建引用可移植类库的nuget包

时间:2014-04-13 01:38:57

标签: nuget nuget-package portable-class-library

我正在尝试构建一个nuget包,它安装一个可移植的类库,它本身依赖于可移植类库的集合。我可以创建包并安装它没有问题,但是当我运行安装了新软件包的应用程序时,.NET 4.5。类库测试项目,我总是得到以下异常:

threw exception: 
 System.IO.FileNotFoundException: Could not load file or assembly 
  'Microsoft.Data.Services.Client.Portable, Version=5.6.1.0, Culture=neutral, ...

我的nuspec文件,包含以下依赖项部分。

<dependencies>
  <group targetFramework="portable-net45+wp80+win">
    <dependency id="Microsoft.Bcl" version="1.1.6"  />
    <dependency id="Newtonsoft.Json" version="6.0.2" />
    <dependency id="Microsoft.Data.Services.Client" version="5.6.1" />
    <dependency id="Microsoft.AspNet.WebApi.Client" version="5.1.1" />
  </group>
</dependencies>

我过去创造了许多nuget包,从未见过这个问题。我猜它与引用我正在创建的PCL dll中的每个库的PCL版本有关但我无法如何让这个nuget正常工作。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

这看起来像是Microsoft.Data.Services.Client NuGet包的问题。对于.NET Framework和Silverlight版本,它使用不同的程序集名称作为可移植版本。因此,您的可移植程序集是针对Microsoft.Data.Services.Client.Portable.dll编译的,但是当您的NuGet包安装到.NET项目中时,会引用Microsoft.Data.Services.Client.dll。

通常,像这样的包应该在所有平台上使用相同的程序集名称(尽管API也需要在平台之间兼容)。