繁体   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