gpt4 book ai didi

command-line - 为什么 MSBuild 只能在开发人员命令提示符下正常工作?

转载 作者:行者123 更新时间:2023-12-02 08:17:20 24 4
gpt4 key购买 nike

我正在使用 msbuild.exe 在本地构建一个项目,例如:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe MyProject.csproj

当我通过开发人员命令提示符执行它时,一切都按预期进行。

但是,当我通过标准的命令提示符 执行它时,我收到一条错误消息:

The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" was not found.

如果我查找该文件夹路径,我确实可以验证它是无效(我的机器上只安装了 VS 2015)。

那么,为什么它在命令提示符 中不起作用,或者相反:为什么它在开发人员命令提示符 中起作用?

编辑:.csproj 文件几乎是 Visual Studio 2015 ASP.NET 4 网站的默认文件,它指定:

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

对我来说,如果未设置 VisualStudioVersion,它似乎默认为 10.0,但从错误消息来看,它假设 VS 版本为 12.0.

我知道我可以修改 .csproj 文件,将 12 替换为 14,但我不想寻求解决方法,而是理解为什么它在开发人员命令提示符中工作,而不是在标准命令提示符中工作。

我猜它可能与不同的环境变量有关,或者类似的东西?

最佳答案

当您运行 Developer Command Prompt 时,您基本上是从 VisualStudio 的工具文件夹运行 VsDevCmd.bat 并为您将使用的控制台设置一些环境变量。没有这些 msbuild 就找不到正确的文件。

例如它设置 VisualStudioVersion 环境变量

@rem VisualStudioVersion
@rem -------------------
@set VisualStudioVersion=14.0

这取决于 .csproj 但我怀疑你可能有类似的东西

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

因此,如果未定义 $(VisualStudioVersion)(并且不会在标准命令提示符中定义),它将使用版本 12。当您通过开发人员命令提示符运行它时 这将设置为 14,您可以开始了。

关于command-line - 为什么 MSBuild 只能在开发人员命令提示符下正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40822575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com