0

我有一个具有以下结构的 nuspec 文件

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>XLabs.Forms</id>
    <version>2.2.0-pre05</version>
    <title>XLabs - Forms</title>
    <authors>XLabs Team</authors>
    <owners>XLabs Team</owners>
    <licenseUrl>https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/LICENSE</licenseUrl>
    <projectUrl>https://github.com/XLabs/Xamarin-Forms-Labs</projectUrl>
    <iconUrl>https://raw.githubusercontent.com/XLabs/Xamarin-Forms-Labs/master/Design/Icons/nuget/icon_nuget.png</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>This package contains the cross-platform XLabs Forms framework and controls.</description>
    <summary>XLabs is a open source project that aims to provide a powerfull and cross platform set of controls tailored to work with Xamarin Forms.</summary>
    <releaseNotes>Updated for Xamarin Forms 2.2</releaseNotes>
    <copyright>Copyright © 2016 XLabs Team</copyright>
    <tags>Xamarin XLabs Forms Controls GridView ListView</tags>
    <dependencies>
      <group>
        <dependency id="XLabs.Platform" version="[2.2.0-pre05]" />
        <dependency id="Xamarin.Forms" version="2.2.0.31" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <!-- Assemblies: Android -->
    <file src="..\..\source\Forms\XLabs.Forms\bin\$configuration$\XLabs.Forms.dll" target="lib\monoandroid" />
    <file src="..\..\source\Forms\XLabs.Forms\bin\$configuration$\XLabs.Forms.pdb" target="lib\monoandroid" />
    <file src="..\..\source\Forms\XLabs.Forms.Droid\bin\$configuration$\XLabs.Forms.Droid.dll" target="lib\monoandroid" />
    <file src="..\..\source\Forms\XLabs.Forms.Droid\bin\$configuration$\XLabs.Forms.Droid.pdb" target="lib\monoandroid" />
    <!-- Assemblies: iOS -->
    <file src="..\..\source\Forms\XLabs.Forms\bin\$configuration$\XLabs.Forms.dll" target="lib\Xamarin.iOS10" />
    <file src="..\..\source\Forms\XLabs.Forms\bin\$configuration$\XLabs.Forms.pdb" target="lib\Xamarin.iOS10" />
    <file src="..\..\source\Forms\XLabs.Forms.iOS\bin\$configuration$\XLabs.Forms.iOS.pdb" target="lib\Xamarin.iOS10" />
    <file src="..\..\source\Forms\XLabs.Forms.iOS\bin\$configuration$\XLabs.Forms.iOS.dll" target="lib\Xamarin.iOS10" />
  </files>
</package>

这让我有点发疯:) 用这个 nuspec 创建的 nupkg 文件应该只安装在 Xamarin iOS 或基本 Xamarin Android 项目中,对吗?不正确,它安装在任何类型的项目(PCL、Windows 10、Windows 8 等)中。我现在不确定还可以做什么来限制软件包,以便它只能安装在我需要的目标中。

谁能看到我可能做错了什么?

更新:这是我尝试过的最新版本的 nuspec 文件,但仍然无法正常工作。下面将创建一个安装在 Windows 8、Windows Mobile 和 PCL 项目中的包,即使它只包含 Android 基础程序集

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>XLabs.Forms</id>
    <version>2.2.0-pre05</version>
    <title>XLabs - Forms</title>
    <authors>XLabs Team</authors>
    <owners>XLabs Team</owners>
    <licenseUrl>https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/LICENSE</licenseUrl>
    <projectUrl>https://github.com/XLabs/Xamarin-Forms-Labs</projectUrl>
    <iconUrl>https://raw.githubusercontent.com/XLabs/Xamarin-Forms-Labs/master/Design/Icons/nuget/icon_nuget.png</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>This package contains the cross-platform XLabs Forms framework and controls.</description>
    <summary>XLabs is a open source project that aims to provide a powerfull and cross platform set of controls tailored to work with Xamarin Forms.</summary>
    <releaseNotes>Updated for Xamarin Forms 2.2</releaseNotes>
    <copyright>Copyright © 2016 XLabs Team</copyright>
    <tags>Xamarin XLabs Forms Controls GridView ListView</tags>
    <dependencies>
      <group targetFramework="monoandroid">
        <dependency id="XLabs.Core" version="[2.2.0-pre05]" />
        <dependency id="XLabs.IoC" version="[2.2.0-pre05]" />
        <dependency id="XLabs.Platform" version="[2.2.0-pre05]" />
        <dependency id="XLabs.Serialization" version="[2.2.0-pre05]" />
        <dependency id="Xamarin.Forms" version="2.2.0.31" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <!-- Content Files -->
    <file src="..\..\docs\XLabs.Forms.Readme.md" target="content\XLabs.Forms.Readme.md" />
    <!-- Assemblies: Android -->
    <file src="..\..\source\Forms\XLabs.Forms\bin\$configuration$\XLabs.Forms.dll" target="lib\monoandroid" />
    <file src="..\..\source\Forms\XLabs.Forms\bin\$configuration$\XLabs.Forms.pdb" target="lib\monoandroid" />
    <file src="..\..\source\Forms\XLabs.Forms.Droid\bin\$configuration$\XLabs.Forms.Droid.dll" target="lib\monoandroid" />
    <file src="..\..\source\Forms\XLabs.Forms.Droid\bin\$configuration$\XLabs.Forms.Droid.pdb" target="lib\monoandroid" />
  </files>
</package>
4

2 回答 2

0

原来问题出在这条线上

<!-- Content Files -->
<file src="..\..\docs\XLabs.Forms.Readme.md" target="content\XLabs.Forms.Readme.md" />

由于其中没有目标名字对象,因此它对所有目标框架都有效。一旦我删除它,一切都开始工作了。我认为 nuspec 文件格式需要在其文档中提供更多详细信息:)

于 2016-09-07T23:30:55.017 回答
0

我相信这是因为您有一个没有目标框架的组依赖项。组依赖项将导致 NuGet 安装 Xamarin.Forms 和 XLabs.Platform NuGet 包,而除非您安装到 iOS 或 Android 项目中,否则不会使用您的 lib 目录中的程序集。

我会尝试为 iOS 和 Android 添加目标框架。

<group targetFramework="Xamarin.iOS10">
   <dependency id="XLabs.Platform" version="[2.2.0-pre05]" />
   <dependency id="Xamarin.Forms" version="2.2.0.31" />
</group>

<group targetFramework="MonoAndroid">
   <dependency id="XLabs.Platform" version="[2.2.0-pre05]" />
   <dependency id="Xamarin.Forms" version="2.2.0.31" />
</group>
于 2016-06-04T13:03:21.947 回答