我创建了一个加载项......除此之外,将一个 c++ 项目添加到解决方案中。
我在将 c++ 项目添加到包含 c# 或 vb.net 项目的解决方案时遇到问题(我将这些解决方案称为 dot net 解决方案)。
我相信你们都做到了——没有 envdte 自动化。
将 c++ 项目(支持 Win32 和 x64 平台)添加到点网解决方案。查看配置管理器 -> 由于 dot net 解决方案只有 x86 和 x64,x64 配置是正确的,但是在 x86 配置中您将看到 c++ 项目的不是 Win32 - 您将看到 x64 !!!!哦,是的,VS 很聪明,知道这行不通,也没有选择这个配置来构建!!!!
如果您是手动执行此操作,那么您作为开发人员应该足够聪明,可以进行检查,好的。但是我正在尝试构建一个自动化来添加这个项目——这意味着,用户可能不知道这个错误,将构建解决方案——它会失败。
我试图改变平台 - 但它是只读的。
这是我迄今为止发现的唯一东西:
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
" - 没有什么可以指定平台... - 所以假设我删除了该行,我该如何正确添加它?