簡體   English   中英

從PowerShell腳本調用時,MSBuild使用.sln;而從命令行調用時,則使用.csproj

[英]MSBuild uses .sln when called from PowerShell script but .csproj when called from command line

我已經在這個頭上抓了一段時間了,似乎什么也找不到。 我正在嘗試執行以下操作:

C:\\ Windows \\ Microsoft.NET \\ Framework \\ v3.5 \\ MsBuild.exe D:\\ SourceFiles \\ Testing \\ AppaloosaDotNet \\ AppaloosaDotNet \\ AppaloosaDotNet.csproj“ / t:_CopyWebApplication; ResolveReferences; publish” / 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,然后構建將失敗,因為找不到目標。

我確定我在腳本中做錯了什么,但無法弄清楚是什么。 我仔細檢查過,腳本執行的命令與我鍵入的命令相同。 我什至復制了運行腳本時運行的命令,並粘貼在提示符下,並且運行良好,因此我可以肯定命令是相同的。 有任何想法嗎?

您的腳本可以與解決方案位於同一路徑嗎? 您如何精確地運行腳本以及腳本位於何處(如果腳本與解決方案不在同一路徑上)? 沒什么,只是讓我們確認一下。

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

暫無
暫無

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

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