C# コードから MSDeploy API を使用して、削除コマンドをリモートで起動しようとしています。
次のコマンドを実現したい:
msdeploy.exe -verb:delete -dest:contentPath="/folderName/filename.txt"
管理されていない外部実行可能ファイルを実行する代わりに、MSDeploy .Net API を使用してこれを実行したいと考えています。
(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
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 つのファイルが表示されます...?!