首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的构建应用程序在VS12之外运行时会失败(即部署时)?

为什么我的构建应用程序在VS12之外运行时会失败(即部署时)?
EN

Stack Overflow用户
提问于 2014-12-26 15:06:26
回答 2查看 102关注 0票数 0

我编写了一个c#程序,它使用Microsoft.Build.Evaluation构建*.csproj和*.vcxproj。如果我在Visual 12中编译和运行这两种项目类型,那么这两种类型都能很好地工作。但是如果我直接运行exe (在Visual之外),我会得到下面的示例错误消息。错误只发生在vcx项目;c#项目继续构建得很好。

问题:为什么我会收到这个错误?为什么我的程序在从C#内部运行时对VS12和vcx项目都很好,但是失败了,但是只有在VS12之外运行时,vcx项目才能正常工作?

请不要因为我不使用MSBuild.exe而责备我。我的任务是以编程的方式使用Microsoft.Build.Evaluation构建Microsoft.Build.Evaluation和vcx项目。

代码语言:javascript
复制
using Microsoft.Build.Evaluation;
...

Project proj = new Project("MyCppProject.vcxproj");
proj.Build(logger);

运行时错误

代码语言:javascript
复制
Building MyCppProject
Project "MyCppProject.vcxproj" (default targets):
VCMessage: 
ERROR C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(518,5): Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.
Done building project "MyCppProject" -- FAILED.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-29 10:58:44

一种解决方案是在加载和构建项目之前强制将Visual版本作为环境变量:

代码语言:javascript
复制
using Microsoft.Build.Evaluation;
...

Environment.SetEnvironmentVariable("VisualStudioVersion", "11.0")
Project proj = new Project("MyCppProject.vcxproj");
proj.Build(logger);
票数 0
EN

Stack Overflow用户

发布于 2014-12-26 15:15:34

Visual维护支持当前运行的Visual版本的平台工具集列表,例如,在我的机器上,我有VS 2008、2010和2012

现在假设当我安装Visual 2013时,它有一个平台工具集版本的V120。所发生的情况是,该项目以格式(vcproj、vcxproj、vcxproj.filter.user文件)将其保存在相应的XML文件中。

现在这个阀不为VS 2012所知,所以它在VS 2012打开时会抱怨。

同样,在VS 2010中打开VS 2012项目,就像在您的案例中那样等等。

解决方案:

若要解决此问题,请在notepad++中打开解决方案文件。进行以下2项更改1)替换

格式12.00版

使用

格式11.00版

2)替换

2012

使用

2010

然后在visual studio中再次打开文件并重新构建解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27658686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档