【问题标题】:MSDeploy task and presyncMSDeploy 任务和预同步
【发布时间】:2012-06-05 19:00:20
【问题描述】:

是否可以通过 MSDeploy 任务指定 preSync/postSync 命令?如果没有,我该如何完成?

【问题讨论】:

    标签: msbuild msdeploy web-deployment msbuild-task


    【解决方案1】:

    您使用的是哪种类型的 MSDeploy 任务?如果它是通过 msdeploy.exe 的 Exec,那么是的,当然,如果它是某种不直接支持它们的包装器,那么您可以通过使用 run-command 提供程序再次调用同步来模拟它们,因为 pre/post-sync 只是在 try/catch/finally 结构中再次调用同步,无论如何都会包装主同步。

    private int ExecuteWorker()
    {
        ...
        if (!this.HandleAuxillarySync("-preSync", this._commandLine._preSyncParameters, retbaseOptions2))
            return -1;
        DeploymentChangeSummary deploymentChangeSummary;
        try
        {
            deploymentChangeSummary = @object.SyncTo(retproviderOptions2, retbaseOptions2, syncOptions);
        }
        ...
        finally
        {
            this.HandleAuxillarySync("-postSync", this._commandLine._postSyncParameters, retbaseOptions2);
        }
        this.HandleAuxillarySync("-postSyncOnSuccess", this._commandLine._postSyncOnSuccessParameters, retbaseOptions2);
        ...
    
    private bool HandleAuxillarySync(string syncType, Dictionary<string, string> sourceParameters, DeploymentBaseOptions destBaseOptions)
    {
        ...
        try
        {
            using (DeploymentObject @object = DeploymentManager.CreateObject(retproviderOptions, retbaseOptions))
            @object.SyncTo(destBaseOptions, syncOptions);
                flag = true;
        }
    

    【讨论】:

    • 我正在使用来自 Microsoft.Web.Publishing.targets 的 MSBuild 任务 MSDeploy。
    • 在这种情况下不,只需有条件地调用单独的同步,然后像 exe 本身一样发布主同步。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2016-09-20
    相关资源
    最近更新 更多