2011-09-01 104 views
1

我一直在摸索着這一段時間,似乎找不到任何東西。我想執行如下:當從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然後生成失敗,因爲沒有找到目標。

我確定我在腳本中做錯了什麼,但無法弄清楚什麼。我仔細檢查過,看到腳本執行的命令與我輸入的命令相同。我甚至複製了運行腳本時運行的命令,並在提示符處粘貼並運行正常,因此我非常確定命令是相同的。有任何想法嗎?

+1

發佈您的powershell腳本 – manojlds

+0

當我看到'D $ \\'時,只是一個無限制的註釋 - 您確定PowerShell不會嘗試擴展'$ \'作爲變量嗎? – stej

回答

-3

只是一個更新。我開始有更多的腳本問題,但最終找到了解決方案。我在腳本中使用字符串變量構建命令行。最初,腳本使用&運算符執行命令。我最終使用了Invoke-Expression命令並解決了問題。

+3

發佈腳本並修復腳本。 –

2

您的腳本能否與您的解決方案位於相同的路徑? 你究竟是如何運行你的腳本以及它駐留在哪裏(如果它與解決方案不在相同的路徑上)? 它可能是什麼,但讓我們只是確認。

+0

我將腳本移到與.csproj文件相同的文件夾中,並使用.sln文件解決了MSBuild的問題。我從來不會猜到這一點。我不是PowerShell專家。這是一個正常的行爲?有人說,我現在收到一條消息,說_Skipping unpublishable project._但至少我正在取得進展。感謝您的建議。 –