Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WinSCP程序集不匹配作为对象引用的C Windows服务未设置为对象的实例_C#_Service_Winscp - Fatal编程技术网

C# 使用WinSCP程序集不匹配作为对象引用的C Windows服务未设置为对象的实例

C# 使用WinSCP程序集不匹配作为对象引用的C Windows服务未设置为对象的实例,c#,service,winscp,C#,Service,Winscp,我正在编写一个代码,通过WinSCP将文件上传到sftp服务器。 除了我开始在代码中包含WinSCP外,代码中的其他所有内容都可以正常工作。程序集设置失败,因为它显示了对象引用未设置为对象实例的错误 这是使用WinSCP.net引用附带的VS 2010在Windows服务上运行的 下面是设置程序集的代码,我无法使用NuGet,因为这需要更高版本的Visual Studio 所以我必须创建这个程序集,它是我从WinSCPWeb本身获得的,但是我不明白我在这里缺少了什么 tr

我正在编写一个代码,通过WinSCP将文件上传到sftp服务器。 除了我开始在代码中包含WinSCP外,代码中的其他所有内容都可以正常工作。程序集设置失败,因为它显示了对象引用未设置为对象实例的错误

这是使用WinSCP.net引用附带的VS 2010在Windows服务上运行的

下面是设置程序集的代码,我无法使用NuGet,因为这需要更高版本的Visual Studio

所以我必须创建这个程序集,它是我从WinSCPWeb本身获得的,但是我不明白我在这里缺少了什么

            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不匹配


一点帮助会很有帮助。

我发现了问题。显然,我已经有了程序集,这就是为什么错误提到我有错误的程序集版本。但是,它不能匹配的主要原因是

临时WinSCP是在我的程序无权访问的文件夹中创建的。 我复制粘贴了WinSCP exe,而不是通过VS中的Add Item添加。 然后,我将可执行路径硬编码到WinSCP.exe,以修复程序集查找错误文件夹的问题。
我的问题已经解决。

为什么不能使用更新版本的VS?社区版是免费的*@vasily.sib我正在使用2010 pro btw。那又怎样?为什么你不能只使用更新版本的VS?对不起,我可能不知道它们之间的区别,我会查看专业版VS社区版。但是,您能帮助我了解我目前缺少什么吗?不,因为您的代码是关于将.WinSCP.exe从资源文件保存到某个可执行路径的。没有关于加载程序集的任何内容。