首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为添加的项目修复EnvDTE中的配置/平台

为添加的项目修复EnvDTE中的配置/平台
EN

Stack Overflow用户
提问于 2013-06-11 00:53:00
回答 2查看 737关注 0票数 3

我已经创建了一个插件...其中包括将c++项目添加到解决方案中。

在向包含c#或vb.net项目的解决方案中添加c++项目时,我遇到了一个问题(我将这些解决方案称为.Net解决方案)。

我相信你们都已经做到了--没有环境自动化。

将c++项目(具有支持的平台Win32和x64)添加到.NET解决方案中。查看配置管理器->因为.NET解决方案只有x86和x64,所以x64配置是正确的,但是在x86配置中,您将看到c++项目的不是Win32,而是x64!哦,是的,VS足够聪明,知道这是不会工作的,也不会选择这个配置来构建!

如果你是手工完成的,那么作为一个开发者,你应该足够聪明地去检查,好吗?但我正在尝试构建一个自动化来添加这个项目-这意味着,用户可能不知道这个bug,将构建解决方案-它将失败。

我尝试过更改平台--但它是只读的。

这是我到目前为止唯一发现的东西:

代码语言:javascript
复制
SolutionConfiguration config = solution.SolutionBuild.SolutionConfigurations.Item("Debug");

string msg = "";

foreach (SolutionContext context in config.SolutionContexts)
{
  msg += context.ProjectName + context.ConfigurationName + context.PlatformName + context.ShouldBuild;
  context.ConfigurationName = "Debug";  // I can modify this but I don't want to
  if(context.PlatformName == "x64" && !context.ShouldBuild) // this must be the wrong platform
  {
    // I'd like to do that but it won't even compile
    context.PlatformName == "Win32";   // <--- intellisense says error
    context.ShouldBuild = true;        // compiles but checkbox doesn't get set
  }
}

我曾经考虑过删除整个配置行,然后添加一个新的配置行--但是我不知道该怎么做……

我找到了"ConfigurationManager.DeleteConfigurationRow Method“,但它只删除了”调试“或”发布“配置...http://msdn.microsoft.com/en-us/library/ash2539k(v=vs.100).aspx

(我认为这不是我想要的-我只需要删除与特定平台相关的特定配置-或者,因为所有平台都被添加为x64,所以标记为"ShouldBuild = False“的平台或对应于x86解决方案配置的项目配置。如果我删除所有配置...那是行不通的,即使那样...我下一步要做什么?)

"ConfigurationManager.AddConfigurationRow Method“-没有指定平台...-那么假设我删除了该行,我如何正确地将其添加回来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-11 07:58:28

现在,我正在修改sln文件-

它需要关闭解决方案,编辑文本文件,然后重新打开它。

这并不理想--如果有人能提出一个合适的解决方案,我将不胜感激。

票数 0
EN

Stack Overflow用户

发布于 2015-10-31 21:16:07

有一个解决方案可以解决这个问题,但只适用于VS2012和更高版本。从VS2012开始,您现在可以将EnvDTE.SolutionContext.ConfigurationName属性设置为" configuration | platform“形式,以便在解决方案配置中为给定项目设置目标配置和平台。

我在自己寻找这个问题的解决方案时找到了这个问题的答案。提供这个答案的原始来源是http://www.mztools.com/articles/2013/MZ2013014.aspx。你可以在那里找到一篇更长的文章和一个例子。

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

https://stackoverflow.com/questions/17029011

复制
相关文章

相似问题

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