该应用程序要求首先在全局程序集缓存(GAC)中安装程序集WinSCP版本1.0.6.3261

时间:2015-03-24 17:19:53

标签: c# sftp winscp winscp-net

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

我的问题来自部署。

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

如上所述,我的代码效果很好,可以很好地连接到我的SFTP服务器,传输,重命名和删除文件很棒。

但是....

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

  

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

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

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

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

这是一种耻辱,因为除非我能将其排序,否则我将不得不停止使用此产品并尝试其他方法。

2 个答案:

答案 0 :(得分:1)

看起来您使用不同版本的程序集发布应用程序,而不是构建应用程序。

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

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

然后确保:

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

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

答案 1 :(得分:0)

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

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

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