2

更新 201521011559:我想知道这是否是由用于构建包的 .nuspec 文件中的依赖项规范中的错误引起的...

客户端 SDK 的 .nuspec 文件位于 GoCardless 的 GitHub 存储库中

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 Web 应用程序 - 目标框架设置为 .NET 3.5,没有客户端配置文件或任何东西。

我刚刚安装了包含 GoCardless .NET SDK 的 NuGet 包(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 包资源管理器检查了包。它肯定同时公开了 .NET 2.0 和 .NET 3.5 版本;唯一的依赖项是 Newtonsoft.Json 和 RestSharp,它们都在 .NET 3.5 上运行良好。

我在 Windows 7 x64 上使用 Visual Studio 2010 Premium。这是 Visual Studio 问题、.NET 问题还是 GoCardless SDK NuGet 包的具体问题?

4

3 回答 3

1

我过去通过卸载 Microsoft Blend 解决了这个问题。它与 Visual Studio 2012 一起安装,并且还安装了自己的 Newtonsoft.Json.dll 版本。它对 DLL 做了一些奇怪的事情(也许它在 GAC 中安装了 DLL?),导致 Visual Studio 引用 DLL 的 Blend 版本,而不是它应该引用的任何其他 DLL。

可能有比卸载 Microsoft Blend 更友好的解决方案,但如果您不使用 Blend,那么这是最简单的选择!

于 2015-04-22T12:22:13.833 回答
0

我建议您重新安排整个解决方案:

首先删除: - 如果您现在已经安装了 GoCardless Client Libraries 1.1.15(或 1.1.16),请再次删除:

比尝试再次编译您的解决方案,如果一切运行正常,您应该会收到无法从参考 .dll 中找到文件的错误,对吗?

比您需要确保:

.NET 框架 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。

获取包命令

要更新包,请输入带有包 ID 的 Update-Package。例如,输入命令 Update-Package jQuery。有关可与 Update-Package 命令一起使用的更多选项,请输入 get-help Update-Package 或参见 (../Reference/Package-manager-Console-Commands)。

如果这些更新/可能降级完成,您可以通过执行以下操作更改您的应用程序的 .Net 框架:

  1. 在解决方案资源管理器中,打开要更改的项目的快捷菜单,然后选择“属性”。

  2. 在属性窗口的左列中,选择应用程序选项卡。Visual Studio 应用程序属性应用程序选项卡

(在 Visual Studio 2013 中创建 Windows 应用商店应用程序后,您无法更改 Windows 或 .NET Framework 的目标版本。)

  1. 在目标框架列表中,选择所需的版本。

  2. 在出现的验证对话框中,选择是按钮。

项目卸载。重新加载时,它以您刚刚选择的 .NET Framework 版本为目标。

如果您已将其更改为 .Net FrameWork 3.5(我建议您将其与您的导入相关),您可以重新导入 GoCardless.dll 并告诉我会发生什么。在我看来,它应该能够添加参考并开始使用它。

于 2015-01-20T15:23:19.627 回答
0

该软件包不再受支持,并且已被其所有者取消列出。

我在这里创建了一个新的:

https://github.com/getAddress/goCardless

(或 PM> Install-Package getAddress.goCardless)

于 2016-10-13T07:42:47.687 回答