【问题标题】:Nuget Packages for the Xamarin Cross-Platform Shared ProjectXamarin 跨平台共享项目的 Nuget 包
【发布时间】:2018-01-20 23:57:47
【问题描述】:

在跨平台解决方案中右键单击共享项目,“管理 NuGet 包”菜单选项被禁用。使用“解决方案的 NuGet 包管理器”,它不会将共享项目显示为可安装到的项目。共享项目不可扩展吗?包必须手动安装吗?

【问题讨论】:

  • 也许这条评论对您没有帮助,但是您有什么理由需要使用“共享项目”,而不是 PCL 或 .NET 标准库?

标签: visual-studio xamarin xamarin.forms nuget nuget-package


【解决方案1】:

shared project 只是包含在另一个“父”项目中的源文件的集合。您不能直接编译它,也不能添加引用或包。它从编译时处于活动状态的任何父项目继承其环境(包括包)。

【讨论】:

  • 在编写共享代码时,您是否仅限于使用可以安装到所有平台的软件包扩展?例如,OData 安装到所有平台,我可以使用 OData 编写共享代码吗?编译器是否为每个平台构建共享代码二进制文件?为单个库创建平台重定向表?在共享代码中创建特定于平台的分支?
  • @MarcGeorge 你不限于任何事情。但是,如果您使用需要在另一个平台上不可用的包的代码,则除非您在那里安装一些包,否则该代码将无法编译,或者使用 #if 指令将其从编译中删除..
【解决方案2】:

要安装一个包,项目必须有一个目标。这是必要的,因为包与每个目标都不兼容。共享项目没有任何目标,并且可能与具有不同目标的各种项目共享,因此包可能不适用于所有项目。

【讨论】:

  • Nuget 包现在是否被标记为跨平台兼容并因此可用于共享项目?还是它们完全不可扩展?
  • Nuget 包可能涵盖多个平台,但这并不意味着它们涵盖了您能想到的所有平台(尤其是旧平台除外)。他们不必这样做,他们可以只覆盖一个平台。
【解决方案3】:

共享项目不可扩展吗?包必须手动安装吗? 在编写共享代码时,您是否仅限于使用可以安装到所有平台的软件包扩展?

正如 Jason 所说,共享项目基本上只是一个包含代码文件的文件夹。它们不会像您习惯的其他项目类型那样构建任何输出。它们中的任何内容都会链接到引用它的项目中。

要解析共享项目的 nuget 包,您应将 NuGet 包添加到您的 iOS/Android/Windows 项目而不是共享项目中

在这种情况下,当您构建解决方案时,共享项目代码将可以访问 iOS/Android/Windows 项目。

跟踪这个问题可以参考这个帖子:Add NuGet Packages is disabled

【讨论】:

  • Leo,如果需要将 NuGet 包“添加”到共享项目中,我是否正确,那么最好有一个单独的项目供您使用要添加与共享项目在同一解决方案中的 NuGet 包吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 2019-01-03
  • 2019-09-11
  • 2017-11-03
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多