我已经开始在我的应用程序中使用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
文件夹中可见,但在尝试重新安装应用程序后,目标计算机上显示相同的错误消息。
这是一种耻辱,因为除非我能将其排序,否则我将不得不停止使用此产品并尝试其他方法。
答案 0 :(得分:1)
看起来您使用不同版本的程序集发布应用程序,而不是构建应用程序。
WinSCP .NET程序集版本1.0.6.3261附带WinSCP 5.1.5。
我建议您从项目中删除对WinSCP的所有引用,删除程序集的所有副本,然后从NuGet重新安装程序集。
然后确保:
WinSCPnet.dll
WinSCPnet.dll
(虽然这些应该是默认值,从NuGet安装程序集时)
答案 1 :(得分:0)
在联系WinSCP支持后,问题出现在设置上。
在发布应用程序之前,需要检查以下内容。
在“项目”属性中,转到“发布”页面,单击“应用程序文件”并确保“发布状态”设置为“包含WinSCPnet.dll”