【问题标题】:How to target my portable class library in a Nuget-Package?如何在 Nuget 包中定位我的可移植类库?
【发布时间】:2016-09-24 21:07:08
【问题描述】:

我正在尝试为另一个项目创建一个 Nuget 包,该项目在项目属性中设置了以下目标:

  • .NET Framework 4.5
  • ASP.NET Core 1.0
  • Windows 8
  • Windows Phone Silverlight 8
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.iOS(经典)

我创建包的项目的目标完全相同。

在 Nuget 包资源管理器中,我创建了一个 lib 文件夹,并在该 lib-文件夹中添加了另一个文件夹,其中包含 Add Portable Library 和以下设置:

  • .NET Framework v4.5 及更高版本
  • Windows Phone 8

创建后的目录名称为:

portable-net45+wp8 (.NETPortable,Version=v0.0,Profile=net45+wp8)

我将 Nuget 包发布到我的私人存储库并尝试将其导入到我上面描述的项目中,但它给了我一个错误:

无法安装包“my.package 0.0.1-alpha1”。你正试图 将此软件包安装到目标项目中 '.NETPortable,Version=v4.5,Profile=Profile78',但包确实 不包含任何程序集引用或内容文件 与该框架兼容。如需更多信息,请联系 包作者。

谁能告诉我,如何正确设置我的包,以便可以导入我的包?怎么了?

提前致谢!

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    您的 NuGet 包具有可移植配置文件:

    portable-net45+wp8
    

    配置文件 78 具有可移植配置文件:

    portable-net45+win8+wp8
    

    所以问题是您使用的配置文件并未表明它支持 Windows 8 (win8),因此 NuGet 认为它与 Profile 78 不兼容。

    如果您的可移植类库程序集以 Profile 78 为目标,那么您应该可以重命名该目录以包含 win8,使其变为 portable-net45+win8+wp8

    【讨论】:

    • 谢谢,到目前为止似乎有效。我有另一个问题。我向我的包 (SignalR.Client) 添加了一些依赖项并将其放入 。为什么 nuget 在描述中说“不支持”?,当我尝试将它添加到项目时。安装后引用了主dll,但没有安装依赖项。
    • 我猜 NuGet 无法识别目标框架。您在哪里看到不受支持以及您使用的是哪个版本的 NuGet 和/或 Visual Studio?查看具有类似依赖关系的 SignalR.Client NuGet 包,在 Visual Studio 2015 中使用 NuGet 3 似乎没问题。
    • 嗯,我使用的是 Visual Studio 2015,并且安装了最新的 Nuget 包管理器扩展。我对此表示怀疑,但这可能是服务器端的问题吗?我正在使用自定义 PHP 服务器作为 nuget 包服务器。
    • 可能。 SignalR.Client 具有类似的依赖关系,如果您在搜索 nuget.org 时可以这样做,那么它可能是您的自定义服务器。
    • 今天晚些时候让我检查一下。我会尝试在本地创建一个 repo,并会尽快回复您。
    猜你喜欢
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多