1

C# コードから MSDeploy API を使用して、削除コマンドをリモートで起動しようとしています。

次のコマンドを実現したい:

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

管理されていない外部実行可能ファイルを実行する代わりに、MSDeploy .Net API を使用してこれを実行したいと考えています。

4

2 に答える 2

2

(Webサイトのファイルではなく)絶対ファイルパスを削除しようとしているとすると、次のようなものを探しています。

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
于 2012-10-23T23:02:48.747 に答える
0

Richard Szalay の指導のおかげで答えを見つけました。ContentPathこれは VS Publishing で使用される一般的なプロバイダーであるため、プロバイダーを使用したため、アクセス許可を持つ可能性が高くなります。

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削除されたファイルが 1 つしかない場合でも、常に 3 つのファイルが表示されます...?!

于 2012-10-24T05:54:31.863 に答える