簡體   English   中英

MSDEPLOY 在 Visual Studio 中使用 CMD 和 C# 腳本

[英]MSDEPLOY using CMD with C# script in Visual Studio

我正在嘗試使用 Visual Studio 中的 cmd 以 c# 作為腳本語言執行 msdeploy.exe 命令

 string filename = @"C:\Deploy\Test\Test.zip";
        string servername = @"PADEVSPTAPP";
        string compname = @"IIS Web Application Name";
        string appvalue = @"Test";
        string strCmdText;
        strCmdText = "msdeploy.exe -verb:sync -source:package=" + filename + " -dest=auto,computerName=" + servername + " -setParam=name=" + compname + ",value=" + appvalue + " -allowUntrusted";
        //System.Diagnostics.Process.Start("CMD.exe", strCmdText);
        try
        {
            System.Diagnostics.ProcessStartInfo procStartInfo =
            new System.Diagnostics.ProcessStartInfo("cmd", "/c " + strCmdText);


            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.UseShellExecute = false;

            procStartInfo.CreateNoWindow = true;

            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo = procStartInfo;
            proc.Start();

            string result = proc.StandardOutput.ReadToEnd();

            proc.WaitForExit();

            Console.WriteLine(result);



        }
        catch (Exception objException)
        {
            Console.WriteLine(objException.ToString());
        }

字符串結果是

msdeploy.exe -verb:sync -source:package="C:\\\\Deploy\\\\Test\\\\Test.zip" -dest=auto,computerName="PADEVSPTAPP" -setParam=name="IIS Web Application Name",value="Test" -allowUntrusted

但這由於命令中的\\\\而不起作用。

我應該如何執行此命令。

我什至嘗試使用 powershell 腳本,這也不起作用

string PS_script = @"$msdeploy = ""C:\\Program Files\\IIS\\Microsoft Web Deploy V3\\msdeploy.exe""
                $package = """;
PS_script = PS_script + Row.deployfile;
 PS_script = PS_script + @"""
                    $compname = ""PADEVSPTAPP""
                    $appname = ""IIS Web Application Name""
                    $appvalue = """;
PS_script = PS_script + changetype[0];

 PS_script = PS_script + @"""
            $md = $(""`""{0}`"" -verb:sync -source:package=`""{1}`"" -dest=auto,ComputerName=`""{2}`"" -setParam=name=`""{3}`"",value=`""{4}`"" -allowUntrusted"" -f $msdeploy, $package, $compname, $appname, $appvalue)
            cmd.exe /C ""`""$md`""""";

我不知道我哪里出錯了。

您在應該是冒號的地方使用了等號。

它應該是-dest:而不是-dest=

setParam相同,它應該是-setParam:不是-setParam=

我懷疑你的字符串中實際上沒有雙反斜杠\\\\如果你通過調試器檢查它看起來就像那樣 - 我懷疑這就是讓你失望的原因。

由於您的compname變量中有空格, compname您的參數字符串中需要雙引號(可能在所有變量周圍都是一個好主意)。

還可以嘗試直接運行msdeploy.exe而不是通過cmd.exe /c

我假設您的 msdeploy.exe 位於 C:\\Program Files (x86)\\IIS\\Microsoft Web Deploy V3

字符串結果是:

-verb:sync -source:package="C:\Deploy\Test\Test.zip" -dest:auto,computerName="PADEVSPTAPP" -setParam:name="IIS Web Application Name",value="Test" -allowUntrusted

把它們放在一起:

string filename = @"C:\Deploy\Test\Test.zip";
string servername = @"PADEVSPTAPP";
string compname = @"IIS Web Application Name";
string appvalue = @"Test";
string strCmdText;
strCmdText = "-verb:sync -source:package=\"" + filename + "\" -dest:auto,computerName=\"" + servername + "\" -setParam:name=\"" + compname + "\",value=\"" + appvalue + "\" -allowUntrusted";
//System.Diagnostics.Process.Start("CMD.exe", strCmdText);
try
{
    System.Diagnostics.ProcessStartInfo procStartInfo =
    new System.Diagnostics.ProcessStartInfo(@"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe");
    procStartInfo.Arguments = strCmdText;


    procStartInfo.RedirectStandardOutput = true;
    procStartInfo.UseShellExecute = false;

    procStartInfo.CreateNoWindow = true;

    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo = procStartInfo;
    proc.Start();

    string result = proc.StandardOutput.ReadToEnd();

    proc.WaitForExit();

    Console.WriteLine(result);



}
catch (Exception objException)
{
    Console.WriteLine(objException.ToString());
}

獎金信息

如果您需要更msdeploy.exe方法來確定msdeploy.exe所在的位置,請查看以下鏈接:

https://gist.github.com/SergeyAxenov/15cf008531e6d0741533

如何找出當前安裝的 webdeploy/msdeploy 版本?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM