【问题标题】:WinSCP .NET Assembly throws "The module was expected to contain an assembly manifest"WinSCP .NET 程序集抛出“该模块应包含程序集清单”
【发布时间】:2013-11-09 20:34:05
【问题描述】:

我正在尝试在我的 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 was unhandled.

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

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

【问题讨论】:

标签: c# .net visual-studio-2012 winscp winscp-net


【解决方案1】:

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

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

【讨论】:

  • 我的项目是 64 位的,一旦我将其更改为 32 位,它就可以工作了。非常感谢您抽出宝贵时间提供帮助!
猜你喜欢
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多