【问题标题】:NuGet package from PCL来自 PCL 的 NuGet 包
【发布时间】:2018-06-27 10:04:03
【问题描述】:

我有一个想要作为 NuGet 包分发的 PCL 库。

PCL 应用程序库属性页面的屏幕截图:

csproj 文件:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile111</TargetFrameworkProfile>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

重现我的问题的步骤:

  1. 从以下位置克隆两个 repos:

  2. 构建NugetPackage项目+nuget spec+nuget pack

  3. 创建一个指向项目文件夹的本地 nuget 包存储库。
  4. 打开NugetConsole 解决方案并尝试在两个项目中安装该软件包。

我使用的一些参考资料:

【问题讨论】:

  • 不使用 PCL 而是使用 .NET Standard 怎么样?
  • 我会清除您的缓存,包括机器缓存和解决方案的包目录,以确保您没有旧的 .nupkg 已过时且其 lib 目录中没有任何程序集。
  • 同意马特的观点。根据您的描述,我创建了一个 nuget 包,1drv.ms/f/s!Ai1sp_yvodHfhE5bxnyGmwev3ue_。将其安装到控制台应用程序和 PCL 项目中,它们都可以正常工作。所以请尝试删除解决方案文件夹中的packages文件夹,或者在新的解决方案NOT项目中安装theat包。
  • @MattWard 这确实是“一个”问题。我正在用新的发现更新我的问题,请告知。由于单元测试,DotNet 标准现在不可行...
  • 我认为我真正的问题是;如何从 PCL 库中制作 nuget 包并在 PCL 库中使用它。(我花了一些时间来弄清楚实际问题)

标签: xamarin nuget visual-studio-2017 portable-class-library


【解决方案1】:

如何从 PCL 库制作 nuget 包并在 PCL 库中使用它?

我已经下载了您的 nuget 包和测试项目,我可以创建 nuget 包并将其安装到这两个项目中。以下是我的详细步骤:

1.创建 nuget 包:

下载nuget项目,然后构建项目+nuget spec+nuget pack:

这是.nuspec 文件:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>My.Package</id>
    <version>1.0.0</version>
    <authors>Tester</authors>
    <owners>Tester</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
    <files>
       <file src="bin\**" target="lib\portable-net45+wp8\" />
    </files>
</package>

注意:由于您打算将此包使用到PCL库中,所以目标应该是.net45 + Profile49,根据文档Portable Class Library (PCL) profiles,nuget目标应该是portable-net45+wp8

2。将该软件包安装到两个项目中:

从 GitHub 下载这两个测试项目,用 Visual Studio 2017 打开,然后将创建的包复制到本地 nuget 提要:

打开包管理器控制台,使用以下命令安装包:

install-package My.Package -source D:\LocalServer

所以 nuget 包在两个项目中都正确安装。

注意:我在您的控制台应用程序的项目文件中看到了以下代码:

  <ItemGroup>
    <PackageReference Include="My.Package">
      <Version>1.0.0</Version>
    </PackageReference>
  </ItemGroup>

请删除它,这不是添加 nuget 包的正确方法。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
相关资源
最近更新 更多