我一直在摸索着這一段時間,似乎找不到任何東西。我想執行如下:當從PowerShell腳本調用MSBuild時使用.sln,但從命令行調用.csproj
C:\ WINDOWS \ Microsoft.NET \框架\ v3.5版本\ MsBuild.exe d:\ SourceFiles \測試\ AppaloosaDotNet \ AppaloosaDotNet \ AppaloosaDotNet.csproj「/ T: _CopyWebApplication; ResolveReferences;發佈「/ p:ReferencePath = D:\ Builds \ Testing \ LatestBuild \/p:OutDir = \\ ServerName \ D $ \ WebContent \ AppaloosaDotNET \ bin \/p:WebProjectOutputDir = \\ ServerName \ D $ \ WebContent \ AppaloosaDotNET \
如果我直接輸入這個命令到PowerShell提示符,它工作正常。然而,我創建了一個PowerShell腳本,可以爲我調用此腳本,並且腳本執行時,MSBuild向上移動一個文件夾並使用解決方案文件(.sln)構建項目。這會導致問題,因爲解決方案文件中找不到目標。
如果我手動輸入命令並執行它,MSBuild將打印出它正在構建D:\ SourceFiles \ Testing \ AppaloosaDotNET \ AppaloosaDotNET \ AppaloosaDotNET.csproj並且構建正常。
但是,如果我運行腳本MSBuild打印出它正在建設D:\ SourceFiles \ Testing \ AppaloosaDotNET \ AppaloosaDotNET.sln然後生成失敗,因爲沒有找到目標。
我確定我在腳本中做錯了什麼,但無法弄清楚什麼。我仔細檢查過,看到腳本執行的命令與我輸入的命令相同。我甚至複製了運行腳本時運行的命令,並在提示符處粘貼並運行正常,因此我非常確定命令是相同的。有任何想法嗎?
發佈您的powershell腳本 – manojlds
當我看到'D $ \\'時,只是一個無限制的註釋 - 您確定PowerShell不會嘗試擴展'$ \'作爲變量嗎? – stej