GoCardless SDK "требуется более поздняя версия.NET Framework, чем та, которая указана в проекте" (ASP.NET 3.5, Visual Studio 2010)

ОБНОВЛЕНИЕ 201521011559: Мне интересно, вызвано ли это ошибкой в ​​спецификациях зависимостей в файле.nuspec, использованном для сборки пакета...

Файл.nuspec для клиентского SDK находится на GitHub-репозитории GoCardless

https://github.com/gocardless/gocardless-dotnet/blob/master/GoCardlessSdk/GoCardlessSdk.nuspec

и включает этот раздел:

<dependencies>
  <group targetFramework="net20">
    <dependency id="Newtonsoft.Json" version="4.5.11"/>
    <dependency id="RestSharp.Net2" version="1.1.11"/>
  </group>

  <!-- For reasons unknown, NuGet pack will not recognise targetFramework and tries to put all our deps into the default group.-->
  <!--
  <group targetFramework="net35">
    <dependency id="Newtonsoft.Json" version="5.0.2"/>
    <dependency id="RestSharp" version="104.1"/>
  </group>
  -->
</dependencies>

Правильно ли я думаю, что это означает, что он попытается установить RestSharp.Net2, независимо от целевой целевой версии фреймворка?


ОРИГИНАЛЬНЫЙ ВОПРОС:

Одним из наших проектов является веб-приложение ASP.NET - целевая среда, установленная на.NET 3.5, без профиля клиента или чего-либо еще.

Я только что установил пакет NuGet, содержащий GoCardless.NET SDK ( http://www.nuget.org/packages/GoCardless/)

PM> Install-Package GoCardless

Похоже, работает нормально. Затем я добавляю ссылку на GoCardless.Sdk на одну из моих страниц, и проект отказывается компилировать:

Не удалось найти тип или имя пространства имен GoCardlessSdk (отсутствует директива using или ссылка на сборку?)

Что действительно странно, так это то, что если я удалю ссылку, то щелкните правой кнопкой мыши на ссылке, Добавить ссылку, перейдите к ..\packages\GoCardless\lib\net35\ папку и выберите GoCardlessSdk.dllЯ получаю эту ошибку:

Для "GoCardlessSdk.dll" или одной из его зависимостей требуется более поздняя версия.NET Framework, чем та, которая указана в проекте. Вы можете изменить цель.NET Framework, щелкнув "Свойства" в меню "Проект", а затем выбрав новую цель в раскрывающемся списке ".NET Framework".

Вы все еще хотите добавить ссылку на 'GoCardlessSdk.dll' в проект?

Я проверил пакет с помощью NuGet Package Explorer. Он определенно предоставляет как версии.NET 2.0, так и версию.NET 3.5; единственными зависимостями являются Newtonsoft.Json и RestSharp, которые отлично работают на.NET 3.5.

Я использую Visual Studio 2010 Premium на Windows 7 x64. Это проблема Visual Studio, проблема.NET или что-то не так с пакетом GoCardless SDK NuGet?

3 ответа

Решение

Я исправил это в прошлом, удалив Microsoft Blend. Он устанавливается вместе с Visual Studio 2012, а также устанавливает собственную версию Newtonsoft.Json.dll. Он делает что-то странное с DLL (может быть, устанавливает DLL в GAC?), Что заставляет Visual Studio ссылаться на версию DLL Blend, а не на любую другую DLL, на которую он должен ссылаться.

Возможно, есть более удобное решение, чем удаление Microsoft Blend, но если вы не используете Blend, то это самый простой вариант!

Я хотел бы предложить вам перестроить все ваше решение:

Прежде всего удалите: - GoCardless Client Libraries 1.1.15 (или 1.1.16) снова, если вы установили его сейчас:

Чем попытаться скомпилировать ваше решение снова, и если все работает нормально, вы должны получить ошибку, что вы не можете найти файл из справочника.dll, верно?

Чем нужно убедиться, что для:

.NETFramework 3.5

Newtonsoft.Json (≥ 5.0.2) || RestSharp (≥ 104,1) и для

Или для.NETFramework 2.0

Newtonsoft.Json (≥ 4.5.11) || RestSharp.Net2 (≥ 1.1.11)

соответствуют точности версии они здесь. (Последнее обновление от GoCardless)

Если вы проверили это с помощью контроллера nuget:

Обновление пакета(нажмите, чтобы посетить страницу)

В меню "Сервис" выберите "Диспетчер пакетов библиотеки", а затем "Консоль диспетчера пакетов". Чтобы проверить, есть ли более новые версии, доступные для любых установленных пакетов, введите Get-Package -updates в командной строке.

Команда Get-Package

Чтобы обновить пакет, введите Update-Package с идентификатором пакета. Например, введите команду Update-Package jQuery. Для получения дополнительных параметров, которые можно использовать с командой Update-Package, введите get-help Update-Package или см. (../Reference/Package-manager-Console-Commands).

Если эти обновления / возможно понижения сделаны, вы можете изменить.Net Framework вашего Приложения, выполнив следующие действия:

  1. В обозревателе решений откройте контекстное меню для проекта, который вы хотите изменить, и выберите "Свойства".

  2. В левом столбце окна свойств выберите вкладку "Приложение". Вкладка приложения свойств приложения Visual Studio

(После создания приложения Магазина Windows в Visual Studio 2013 вы не можете изменить целевую версию Windows или.NET Framework.)

  1. В списке Target Framework выберите нужную версию.

  2. В появившемся диалоговом окне подтверждения нажмите кнопку Да.

Проект выгружается. Когда он перезагружается, он нацелен на версию.NET Framework, которую вы только что выбрали.

Чем, если вы изменили его на.Net FrameWork 3.5 (я бы посоветовал вам принять это в отношении вашего импорта), вы можете повторно импортировать GoCardless.dll и сообщить мне, что происходит. На мой взгляд, он должен быть в состоянии добавить ссылку и начать работать с ней.

Этот пакет больше не поддерживается и не был зарегистрирован его владельцем.

Я создал новый здесь:

https://github.com/getAddress/goCardless

(или PM> Install-Package getAddress.goCardless)

Другие вопросы по тегам