Ted*_*erg 2 msbuild command-line visual-studio-2015
我正在使用msbuild.exe
类似的本地构建项目:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe MyProject.csproj
Run Code Online (Sandbox Code Playgroud)
当我通过Developer Command Prompt执行它时,一切都会按预期进行。
但是,当我通过标准命令提示符执行它时,出现一条错误消息:
找不到导入的项目“ C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications \ Microsoft.WebApplication.targets”。
如果我查找该文件夹路径,则确实可以确认它无效(我在计算机上仅安装了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)' != ''" />
Run Code Online (Sandbox Code Playgroud)
在我看来,如果未设置,它将默认为10.0VisualStudioVersion
,但是从错误消息来看,它是假设VS版本12.0。
我意识到我可以修改.csproj文件,将12替换为14,但我不想采取一种变通方法,而是理解为什么它在Developer Command Prompt中起作用,但在标准命令提示符中却不起作用。
我猜这可能与不同的环境变量有关,或者与之类似?
运行开发人员命令提示符时,基本上是从VisualStudio的“工具”文件夹中运行VsDevCmd.bat,并为要使用的控制台设置一些环境变量。如果没有这些,MSBuild将找不到正确的文件。
例如,它设置了VisualStudioVersion环境变量
@rem VisualStudioVersion
@rem -------------------
@set VisualStudioVersion=14.0
Run Code Online (Sandbox Code Playgroud)
它取决于.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)' != ''" />
Run Code Online (Sandbox Code Playgroud)
因此,如果未定义$(VisualStudioVersion)(并且在标准Command Prompt中不会),则它将使用版本12。当通过Developer Command Prompt运行它时,它将设置为14,您可以使用了。
归档时间: |
|
查看次数: |
2132 次 |
最近记录: |