包装C#跨平台库在尼古特包中

尼古特

请参阅如何轻松bet188地址Nuget Package以发布跨平台C#库,允许在您的便携式类库(PCL)基础项目中集成平台特定代码。在一个 前岗位 您可以阅读关于如何bet188地址跨平台库,并查看图书馆的消耗方式。消耗库的应用程序。此帖子在上次帖子离开的地方建立起来,并展示我们如何使用在NuGet包中提供OS版本号的库。所以我们要bet188地址的包具有以下结构:

  • Osversion.Core.
  • Osversion.uwp.
  • Osversion.Droid.Droid.
  • Osversion.ios.

我们的目标是生成一个单一的核桃包,可以添加到上述任何名称平台中。

注意:虽然此帖子专注于平台上的通用Windows平台(UWP),但是Android和IOS可以轻松扩展,以支持其他平台,例如.NET,Silverlight等人。

bet188地址包定义

首先,我们需要安装nuget命令行工具。确保你 将其添加到您的路径中。在添加到您的路径之后,您可以使用PowerShell执行Nuget命令。要bet188地址一个核心包,您需要一个 NUSPEC. 通过执行命令可以生成的文件):

尼古特 spec

的位置 NUSPEC. 文件并不重要 - 我倾向于在我的根目录中拥有它。在解决方案文件中。如果您打开文件中的文件 轻量级编辑选择,您可以将包规范编辑到Gusto或我们的样本有点像这样:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>OSVersion</id>
    <version>1.0.0.3</version>
    <title>OS Version</title>
    <authors>Mark Allibone</authors>
    <owners>Mark Allibone</owners>
    <!--<licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>-->
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Get the OS version for your UWP, Android or iOS app.</description>
    <releaseNotes>This is the initial release.</releaseNotes>
    <copyright>Copyright 2015</copyright>
    <tags>OSVersion</tags>
  </metadata>
  
  <files>
    <file src="OSVersionAPI\bin\Release\OsVersionAPI.Core.dll" target="lib\portable-net45+wp8+wpa81+netcore45+monoandroid1+xamarin.ios10+UAP10\OsVersionAPI.Core.dll" />
    <file src="OSVersionAPI\bin\Release\OsVersionAPI.Core.pdb" target="lib\portable-net45+wp8+wpa81+netcore45+monoandroid1+xamarin.ios10+UAP10\OsVersionAPI.Core.pdb" />
    <file src="OSVersionAPI\bin\Release\OsVersionAPI.Core.xml" target="lib\portable-net45+wp8+wpa81+netcore45+monoandroid1+xamarin.ios10+UAP10\OsVersionAPI.Core.xml" />
    
    <file src="OSVersionAPI.UWP\bin\Release\OsVersionAPI.Core.dll" target="lib\UAP10\OsVersionAPI.Core.dll" />
    <file src="OSVersionAPI.UWP\bin\Release\OsVersionAPI.Core.pdb" target="lib\UAP10\OsVersionAPI.Core.pdb" />
    <file src="OSVersionAPI.UWP\bin\Release\OsVersionAPI.Core.xml" target="lib\UAP10\OsVersionAPI.Core.xml" />
    
    <file src="OSVersionAPI.Droid\bin\Release\OsVersionAPI.Core.dll" target="lib\monoandroid1\OsVersionAPI.Core.dll" />
    <file src="OSVersionAPI.Droid\bin\Release\OsVersionAPI.Core.pdb" target="lib\monoandroid1\OsVersionAPI.Core.pdb" />
    <file src="OSVersionAPI.Droid\bin\Release\OsVersionAPI.Core.xml" target="lib\monoandroid1\OsVersionAPI.Core.xml" />
    
    <file src="OSVersionAPI.iOS\bin\iPhone\Release\OsVersionAPI.Core.dll" target="lib\xamarin.ios10\OsVersionAPI.Core.dll" />
    <file src="OSVersionAPI.iOS\bin\iPhone\Release\OsVersionAPI.Core.pdb" target="lib\xamarin.ios10\OsVersionAPI.Core.pdb" />
    <file src="OSVersionAPI.iOS\bin\iPhone\Release\OsVersionAPI.Core.xml" target="lib\xamarin.ios10\OsVersionAPI.Core.xml" />
  </files>
</package>

谨防目标文件夹结构,这些名称似乎有点奇怪(我正在看着你Xamarin.android ......),但这些实际上必须用一个模式对齐,或者在安装NuGet包时,您将遇到问题。您可以找到目标文件夹名称 尼古特网站.

集成Nuget包中的一些元数据

您不需要添加PDB(用于调试)或XML文件(IntelliSense的代码文档),但它被认为是最佳实践,并使开发人员的生活更容易使用图书馆,所以我建议您随之而来。

要启用XML元数据文件,请右键单击属性下的项目,构建您可以设置复选标记 XML文档文件。现在,您应该在构建输出中具有XML文件。

默认情况下,应在构建过程中生成PDB文件,除了iOS(始终是您不是它......) - 无论如何,右键单击您的项目 属性,构建,高级...调试信息仅限PDB.

请注意,这些设置是每个构建配置所以请确保设置它 释放 建造通常发货 释放 build of a library.

打包它

现在剩下的所有这些都是bet188地址我们可以使用以下命令执行的包:

尼古特 pack

在bet188地址包后,下一件事就是可以消费。这意味着将包裹推到Nuget或bet188地址自己的NuGet存储库。由于事实,这只是一个演示我将使用第二个选项。

集成在应用程序中的包

现在我们可以通过包管理器添加OS版本库。请注意,我们获得与前博客帖子中的结果相同的结果,但这次使用库的开发人员不需要多次将库添加到项目中,即该潜在的错误源不再存在。

因此,当我们现在在UWP下运行应用程序时,我们会得到以下输出。

Win10versionNumber.

注意如果我们只将NuGet包添加到 nativepcl.core. 项目输出只会显示存根实现。

StubversionNumber.

所以所有的校长都描述于 最后一篇 仍然适用。但是添加了库已经大大简化了。

结论

在本博客文章中,您可以bet188地址如何bet188地址跨平台核心封装,这很好地bet188地址实现跨平台库,实现必须为每个有针对性的平台实现不同的原生特征。在野外已经有许多伟大的图书馆使用这种方法,例如: MVVM光,SQLite,PCL存储等等。

您可以找到示例项目 GitHub..

Updated: