2012-10-23 4 views
1

MSDeploy API를 사용하여 C# 코드를 통해 원격으로 삭제 명령을 실행하려고합니다.MSDeploy API - 코드를 통해 원격 파일 삭제

나는 다음과 같은 명령을 달성하고자 :

msdeploy.exe -verb:delete -dest:contentPath="/folderName/filename.txt"

대신 관리되지 않는 외부 실행 파일을 실행을 통해

, 내가 MSDeploy 닷넷 API를 사용하여이 작업을 실행합니다.

답변

0

나는 리처드 Szalay의에 대한 답 덕분에 찾았습니다 선도적 인이 권한을 갖는 기회 그래서 VS 출판에 의해 사용되는 일반적인 공급자로 내가 ContentPath 제공자를 사용했습니다 것은 높은 :

var deployBaseOptions = new DeploymentBaseOptions 
{ 
    ComputerName = "https://mywebserver.com:8172/msdeploy.axd?sitename=yourIISWebsiteName", 
    UserName = "username", 
    Password = "password", 
    UseDelegation = true, 
    AuthenticationType = "Basic" 
}; 
var syncOptions = new DeploymentSyncOptions 
{ 
    DeleteDestination = true 
}; 
var deploymentObject = DeploymentManager.CreateObject(DeploymentWellKnownProvider.ContentPath, 
                 "yourIISWebsiteName" + "/fileToDelete.txt", 
                 destBaseOptions); 

var results = deploymentObject.SyncTo(deployBaseOptions, syncOptions); 

이상한 것은이 results 항상이 경우에도 3 개 개의 파일이 삭제 보여주고 있다는 것입니다 ...에 하나 ...?!

2

당신은 절대 파일 경로 (아닌 웹 사이트에있는 파일)을 삭제하려는 가정하면, 다음과 같이 뭔가를 찾고 :

DeploymentObject destObject = DeploymentManager.CreateObject(
    DeploymentWellKnownProvider.FilePath, "/foldername/filename.txt"); 

DeploymentObject sourceObject = DeploymentManager.CreateObject("auto", ""); 

DeploymentBaseOptions baseOptions = new DeploymentBaseOptions(); 
DeploymentSyncOptions syncOptions = new DeploymentSyncOptions 
{ 
    DeleteDestination = true; 
}; 

DeploymentChangeSummary results = sourceObject.SyncTo(
    destObject, baseOptions, syncOptions); 

// results.ObjectsDeleted == 1 
+0

이러한 오버로드는 존재하지 않습니다. SyncTo는 DeploymentObject를 사용하지 않습니다. – Doug