【问题标题】:Could load a file or assembly "Renci.SshNet.dll"可以加载文件或程序集“Renci.SshNet.dll”
【发布时间】:2018-02-22 06:38:00
【问题描述】:

问题:

System.IO.FileNotFoundException:无法加载文件或程序集 'Renci.SshNet,版本=2014.4.6.0,文化=中性, PublicKeyToken=1cee9f8bde3db106' 或其依赖项之一。这 系统找不到指定的文件。

该项目基于 .Net Framework 4 构建,有助于将文件从本地传输到 S FTP 服务器。

代码在我的本地机器上运行良好,没有任何问题,当部署在 PROD 服务器上并按计划运行时,会出现上述错误。

让我知道究竟是什么导致了这个问题。

【问题讨论】:

    标签: c#


    【解决方案1】:

    如果不是从库安装,请确保 DLL 未标记为已阻止。出于安全原因,Windows 会标记 zip 和其中的每个文件,您必须取消阻止它们

    【讨论】:

    • -我构建项目成功
    • 我将构建 dll 添加到服务器上以根据调度程序触发它,一旦执行 dll,就会生成错误
    • Zip 文件夹中的文件未被阻止,我已验证。
    【解决方案2】:

    您是在开发 Windows 还是 Web 应用程序?如果是 Web 应用程序,请尝试在 IIS 应用程序池 -> 高级设置中启用一个选项,将“启用 32 位应用程序”设置为 true。这可能会解决您的问题。

    如果是 windows 或控制台应用程序,请选择引用 Renci.SshNet dll 并转到其属性并将“特定版本”设置为 false。

    【讨论】:

    • 它的web应用和Renci.SshNet.dll 2014.4.6.0使用有参考。
    • 在 IIS 上启用 32 位应用程序 = true 如何解决问题
    • 检查 dll 是否放置在 bin 文件夹中,并确保您的 web.config 文件中有程序集引用条目
    • DLL 被放置在文件夹中,并按任务计划的要求安排运行,配置详细信息是从 db 中获取的,因此没有 web.Config 文件
    • 计划运行?您到底想实现什么?要将文件从本地文件夹推送到 SFTP 文件夹吗?如果这是您需要的,您为什么要开发 Web 应用程序?一个简单的控制台应用程序或 Windows 服务器就可以达到目的。
    【解决方案3】:

    最近升级我的 .NET 连接器后,它给出了同样的错误。我在 VS 中编译并运行我的应用程序,它工作正常,因为它将所有 MySQL NET 程序集复制到 exe 文件夹,所以我所做的就是将 Renci.SshNet.dll 复制到我的 exe 目录并且它工作正常。出于某种原因,将路径添加到路径系统变量并没有帮助。最终解决方案是移除 NET 连接器并批量使用 mysqld 为应用程序进行选择和更新。

    【讨论】:

      【解决方案4】:

      看起来您缺少 Renci.SshNet.dll。

      在您的项目引用中,您可以编辑 Renci.SshNet 的属性。确保“复制本地”设置为 true。它会将构建时的 dll 复制到您的输出目录(应该是 bin/Release)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-17
        • 2012-05-26
        相关资源
        最近更新 更多