3

我正在尝试在我的 C# 项目中使用 WinSCP 进行一些 ftp 自动化。我正在使用 Visual Studio 2012,但不确定如何让它工作。

到目前为止我做过的事情:

  • 我将其复制WinSCP.exe到我的项目文件夹中。
  • 我将引用导入WinSCPnet.dll到我的项目中
  • 我跑了C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe Path/To/WINSCPnet.DLL /codebase /tlb

这是我现在的代码:

using WinSCP;

static void Main(string[] args)
{
    try
    {
        SessionOptions sessionOptions = new SessionOptions
        {
            Protocol = Protocol.Ftp,
            HostName = "hostname.address.com",
            UserName = "Username",
            Password = "Password"
        };
    }
    catch (Exception e)
    {
        Console.WriteLine("Error: {0}", e);

    }
}

当我在代码中运行它时,我得到以下异常:

Could not load file or assembly 'WinSCP, Version=1.0.7.3446, Culture=neutral,
PublicKeyToken=b5f19f5762436b89' or one of its dependencies. The module was expected to
contain an assembly manifest.

而 Visual Studio 的错误是:BadImageFormatException 未处理。

我不确定如何将 WinSCP 导入到我的 C# 程序中,希望能得到一些指导。

结论 我使用的是 5.2.5 Beta 和 32 位,但我的项目是 64 位

4

1 回答 1

4

我想你的项目是 64 位的,而 WinSCP .NET 程序集的分布式二进制文件只有 32 位。将您的项目切换到 32 位或从源代码构建 64 位版本的程序集。

另请注意,您不需要注册程序集 ( regasm)。这仅适用于 COM 互操作。当你直接使用它时。

于 2013-11-10T06:16:59.737 回答