Сборки NuGet Framework не работают

#.net #nuget #nuspec

#.net #nuget #nuspec

Вопрос:

Я пытаюсь обновить пакет nuget, чтобы добавить некоторые ссылки на сборки, но я получаю следующую ошибку:

Элемент ‘metadata’ в пространстве имен ‘http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd ‘ имеет недопустимый дочерний элемент frameworkAssemblies’ в пространстве имен http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd‘. Ожидаемый список возможных элементов: ‘зависимости, язык, сводка’ в пространстве имен ‘http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd

Я полагаю, что эта функциональность была добавлена в NuGet 1.2 — я использую 1.2.2213.45.

Вот мой файл nuspec:

 <?xml version="1.0"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
        <id>PetaPoco.Core</id>
        <title>PetaPoco.Core - A tiny ORMish thing for your POCOs (Core Only)</title>
        <version>3.0.0</version>
        <authors>Topten Software</authors>
        <owners>Topten Software</owners>
        <licenseUrl>http://www.toptensoftware.com/petapoco/license</licenseUrl>
        <projectUrl>http://www.toptensoftware.com/petapoco/</projectUrl>
        <iconUrl>http://www.toptensoftware.com/petapoco/nuget_icon.png</iconUrl>
        <requireLicenseAcceptance>true</requireLicenseAcceptance>
        <description>
PetaPoco is a tiny, single file .NET data access layer inspired by Massive that works with both non-dynamic POCO objects and dynamics.

This package includes the just the core PetaPoco library (ie: no T4 templates)

        </description>
        <tags>ORM POCO MVC MVC2 MVC3 ASP.NET WebForms WebMatrix MySQL Database</tags>
        <frameworkAssemblies>
            <frameworkAssembly assemblyName="System.Data" />
            <frameworkAssembly assemblyName="System.Configuration" />
        </frameworkAssemblies>
    </metadata>
    <files>
        <file src="PetaPoco.cs" target="ContentModels" />
    </files>
</package>
  

Ответ №1:

Я думаю, у вас устаревшая версия nuget.exe . Вы можете просто запустить «обновление nuget», и оно обновится до последней версии (которая на сегодняшний день равна 1.3.20425.372). Тогда ваш nuspec должен работать нормально!

Комментарии:

1. Спасибо, Дэвид, это сработало. Странная причина, по которой я фактически удалил nuget и установил 1.3. VS extension manager показывал 1.3, но командная строка по-прежнему была 1.2.

2. На самом деле, nuget.exe вообще не поставляется с расширением VS, так что вы, вероятно, в какой-то момент получили его откуда-то еще. Проверка его местоположения может помочь вспомнить, как он туда попал.

Ответ №2:

Вы также можете получить эту ошибку, если разместили элемент в неправильном месте.
например, вы размещаете <dependencies> элементы за пределами <metadata> элемента.

Ответ №3:

Я тоже столкнулся с этим после установки / удаления бета-версии VS11.

Переустановка nuget со страницы проекта codeplex для меня довольно быстро решила проблему.