2010-04-02 64 views

回答

14

要完成此操作,您需要修改SharpSSH程序集以顯示所需的功能。

獲得源代碼,並打開$ \ SharpSSH-1.1.1.13.src \ SharpSSH \ Sftp.cs

插入下面的課結束前行代碼:

public void Delete(string path) 
{ 
    SftpChannel.rm(path); 
} 

重新編譯並在您的項目中引用重新編譯的DLL。您現在可以刪除SFTP服務器上的文件。

+3

謝謝!偶然發現,它完美的作品。對於任何想要自行編譯的用戶來說,使用下面的構建後ILMerge命令最終會帶來一個名爲SharpSSH.dll的方便程序:'ilmerge/target:library/out:「$(TargetDir) SharpSSH.dll「/ v2」$(TargetDir)Tamir.SharpSSH.dll「」$(TargetDir)DiffieHellman.dll「」$(TargetDir)Org.Mentalis.Security.dll「' – mattmc3 2010-10-20 13:02:49

+0

也幫助了我。非常感謝!! – Vbp 2013-08-19 20:33:35

6

那麼你也可以使用SshExec類,然後使用「RunCommand」方法執行「RM」命令。這樣你就不必重新編譯並建立一個新的dll。

+0

謝謝!這使我免於修改圖書館。 – 2011-01-25 11:06:38

21

的SshExec類並沒有爲我工作,但有點神奇的反思工作:

var prop = sftp.GetType().GetProperty("SftpChannel", BindingFlags.NonPublic | BindingFlags.Instance); 
var methodInfo = prop.GetGetMethod(true); 
var sftpChannel = methodInfo.Invoke(sftp, null); 
((ChannelSftp) sftpChannel).rm(ftpPath); 
+1

這工作就像一個魅力..謝謝:-) – karpanai 2015-02-09 13:12:31

+1

哇,多麼醜陋的黑客。不能這麼好的sftp客戶端刪除文件? – t3chb0t 2016-02-04 17:50:04

0

使用塔米爾的DLL我會建議使用下面的代碼刪除。這樣,你不需要修改Tamir的dll,而下面的代碼可以寫在你的類中。

string fromFile = "https://stackoverflow.com/a/b/MyFile.txt" 
SshExec se = new SshExec(host, username, password); 
se.Connect(port); 
se.RunCommand("rm " + fromFile); 
相關問題