我正在编写代码,以通过WinSCP将文件上传到sftp服务器。 代码中的其他所有内容都可以正常工作,除非我开始将WinSCP包含在代码中。程序集安装失败,因为它显示错误,其中“对象引用”未设置为对象的实例。
这是使用WinSCP .net参考附带的VS 2010在Windows Services上运行的。
下面是设置程序集的代码,由于需要更高版本的Visual Studio,我无法使用NuGet。
所以我必须创建一个从WinSCP网站本身获得的程序集,但是我不明白我在这里缺少什么。
try
{
Assembly executingAssembly = Assembly.GetExecutingAssembly();
string resName = executingAssembly.GetName().Name + "." + "WinSCP.exe";
using (Stream resource = Assembly.GetExecutingAssembly().GetManifestResourceStream(resName))
using (Stream file = new FileStream(executablePath, FileMode.Create, FileAccess.Write))
{
resource.CopyTo(file);
}
}
catch (System.Exception ex)
{
WriteToFile("Cant setup assembly : " + ex.Message);
结果应该是,当程序集成功创建后,上传会话将能够通过,直到此时我收到一个错误消息“ C:\ Windows \ TEMP \ WinSCP.tmp311D的版本。 exe()与该程序集的版本somedir \ WinSCPnet.DLL(5.15.2.0)不匹配。“
少量帮助将非常有帮助。
答案 0 :(得分:1)
我发现了问题。显然,我已经有了程序集,这就是为什么错误提到我的程序集版本错误。但是,无法匹配的主要原因是
我的问题已经解决。