0

我已经开始在我的应用程序中使用 WinSCP .NET 程序集来启用 SFTP 传输。一切都很好,代码运行良好。

我的问题来自部署。

首先,我通过 NuGet 包管理器(5.7 版)安装了 WinSCP。

如前所述,我的代码运行良好,可以很好地连接到我的 SFTP 服务器,传输、重命名和删除文件也很好。

但....

当我发布应用程序时,我收到以下错误消息:

无法安装或运行应用程序。该应用程序要求首先将程序集 WinSCP 版本 1.0.6.3261 安装在全局程序集缓存 (GAC) 中。

有趣的是,WinSCPnet.dll从 NuGet 安装的版本是 1.2.6.5125。

我正在使用 VS 2013 Ultimate,并使用内置的发布向导。

环顾网络,我发现文章说WinSCPnet.dll需要在 GAC 中,所以我的第一个操作是使用 手动将安装的版本WinSCPnet.dll(版本 1.2.6.5125)添加到目标计算机上的 GAC 中gacutil /I winscpnet.dll,它确实成功了在文件夹中可见Windows\assembly,但在尝试重新安装应用程序后,目标计算机上会出现相同的错误消息。

很遗憾,除非我能解决这个问题,否则我将不得不停止使用这个产品并尝试其他的东西。

4

2 回答 2

1

看起来您正在使用与构建应用程序不同版本的程序集发布应用程序。

WinSCP .NET 程序集版本 1.0.6.3261 随附于 WinSCP 5.1.5。

我建议您从项目中删除所有对 WinSCP 的引用,删除程序集的所有副本,然后从 NuGet 重新安装程序集。

然后确保:

  • 解决方案资源管理器中,复制本地属性设置为TrueWinSCPnet.dll
  • 在项目属性中,转到发布页面,单击应用程序文件并确保将发布状态设置为包含WinSCPnet.dll

(虽然这些应该是默认值,但在从 NuGet 安装程序集时)

于 2015-03-25T07:03:44.323 回答
0

联系 WinSCP 支持后,问题出在设置上。

在发布应用程序之前需要检查以下内容。

在项目属性中,转到发布页面,单击应用程序文件并确保将发布状态设置为包含 WinSCPnet.dll

于 2015-03-27T13:22:22.027 回答