2016-06-04 1 views
0

у меня есть nuspec файл со следующей структуройОчень запутаться вокруг создания 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> 

, и это сводит меня с ума немного :) В nupkg файл, созданный с помощью этой nuspec должен ТОЛЬКО установить в Xamarin iOS или базовый проект Xamarin Android прямо? Не верно, он устанавливается в любом виде проекта (PCL, Windows 10, Windows 8 и т. Д.). Я нахожусь в точке, где я не уверен, что еще нужно сделать, чтобы ограничить пакет, чтобы он мог быть установлен только в целевых целях, которые мне нужны.

Может ли кто-нибудь увидеть, что я могу делать неправильно?

UPDATE: вот последняя версия файла 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> 
+0

Возможно, я нашел проблему, и это может быть ошибка. Кажется, что файл, предназначенный для содержания файла readme.md, - если он удаляется, все начинает вести себя так, как ожидалось. – Shawn

ответ

0

Я считаю, что это потому, что у вас есть зависимость группы, которая не имеет цели фреймворк. Групповая зависимость приведет к тому, что NuGet установит пакеты Xamarin.Forms и XLabs.Platform NuGet, в то время как сборки в ваших каталогах lib не будут использоваться, если вы не установите в проект iOS или Android.

Я бы постарался добавить целевую инфраструктуру для 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> 
+0

Спасибо - я подумал об этом около 30 минут после поста и попробовал это и все равно не повезло. Интересно, что файл nuspec, который был помещен INSIDE. Файл nupkg, похоже, удалил целевой атрибут в элементе группы - все еще пытаясь выяснить, почему: -/ – Shawn

+0

Используете ли вы последнюю версию NuGet? Элемент целевой структуры не поддерживался в старых версиях NuGet. –

+0

Я использую последнюю версию (3.4.3.855), и я пробовал последнюю сборку (3.5). Я нахожусь в полной потере - независимо от того, что я делаю, пакет устанавливается в любом проекте. – Shawn

0

Оказывается, этот вопрос с этой линией

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

Так что не имеет целевой кличка в нем, это справедливо для всех целевых структур. Как только я удалил это, все приступило к работе. Я думаю, что формат файла nuspec нуждается в LOT более подробной информации в его документации :)

Смежные вопросы