sshnet / sshnet/SSH.NET

Unable to use DLL in Unity UWP app

Open
#411 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
4.4k
Forks
993
Avg merge
9d 21h
Merged PRs (30d)
1

Description

My steps:

Built Renci.SshNet.NET35 and copied the DLL at *\src\Renci.SshNet.NET35\bin\Debug\ into Unity assets

Modified script from here as needed:

 using System.IO;
 using Renci.SshNet;
 using Renci.SshNet.Common;
 using Renci.SshNet.Sftp;
  
 String Host = "ftp.csidata.com";
 int Port = 22;
 String RemoteFileName = "TheDataFile.txt";
 String LocalDestinationFilename = "TheDataFile.txt";
 String Username = "yourusername";
 String Password = "yourpassword";
  void Start(){
 using (var sftp = new SftpClient(Host, Port, Username, Password))
 {
     sftp.Connect();
  
     using (var file = File.OpenWrite(LocalDestinationFilename))
     {
         sftp.DownloadFile(RemoteFileName, file);
     }
  
     sftp.Disconnect();
 }
 }

Build solution aimed at HoloLens/UWP apps:

SDK - Universal 10

Target device - Any device

UWP Build Type - D3D

Changed .dll settings to SDK: Any SDK ; ScriptingBackend: Dot Net ; Don't process: Checked

Unity version: 5.5.1f1

Visual Studio version: 2015 update 3

Debugger tells me:

An exception of type 'System.IO.FileLoadException' occurred in Renci.SshNet.dll but was not handled in user code

Additional information: Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

I've tried cleaning and rebuilding the solution as well as adding UnityEngine.dll as a reference but with no luck.

Thank you in advance for the help.

Additional info:

I just tried using the DLL from the Renci.SshNet.UAP10 directory and I get the same error.

If I add the lines

 AssemblyName Core = new AssemblyName("System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Retargetable=Yes");

 Assembly.Load(Core);

It stops throwing the Exception but I have no way to check if it's connected properly because any other code stops working (like trying to write "Connected." in a UI Unity textbox).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the UWP build in Unity 5.5.1f1 using the Renci.SshNet.NET35 and Renci.SshNet.UAP10 DLLs, starting with the reported System.Core assembly-load error. Compare the DLL settings and assembly references, then verify that the SftpClient connection runs without FileLoadException and that subsequent Unity UI code executes.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, unity
Domain
game-dev, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.