是否有Visual Studio的configurationpipe理器的替代/插件?

我有需要删除和重命名视觉工作室的解决scheme/项目configurationselect,有没有任何工具,将有助于这个?

我发现内置的工具非常无益。 例如,当我从解决scheme中删除一个configuration时,它将拒绝删除相关的项目configuration,以防其他地方需要它们。 重命名解决schemeconfiguration也不会重命名它的相关configuration。

必须有一个更好的方法来做到这一点。 那里有其他的工具吗?

我有需要删除和重命名视觉工作室的解决scheme/项目configurationselect,有没有任何工具,将有助于这个?

简短的回答: 不。

长的回答: 分类 (例如,你将要集成不完整的“帮手”工具,编写自定义的脚本/工作来创build/集成到你的configurationpipe理过程中)。

编辑点评:很好的问题,很多人都遭受了这个(正如你提到的问题所提到的那样),我们都会喜欢一个很好的答案。

我发现内置的工具非常无益。 例如,当我从解决scheme中删除一个configuration时,它将拒绝删除相关的项目configuration,以防其他地方需要它们。 重命名解决schemeconfiguration也不会重命名它的相关configuration。

同意 – 内置的工具是相当无益的。 维护具有不同configuration和依赖关系的许多项目和解决scheme是非常困难的,特别是针对不同的目标types/平台。 它具有特殊性,如使用多个GUID作为项目,文件集和项目types(存储在registry中),并从*.sln*.vcproj 。 这个工具将试图用这些独特的标识符来“修复”自己,不做任何修改,而忽略一些自己的价值观,从而“修复”项目/解决scheme之间的联系。 这会导致您的registry和configuration文件中出现很多“cruft”,如果将它们检入到版本控制系统中,则会对文件进行不必要的更改,以及文件的许多部分将被“忽略”的情况,甚至尽pipe你(正确)做出了这些改变。 “ 项目名称 ”,“ 项目configuration名称 ”和“ 项目平台名称 ”等数据有时是多余的,有时不是。 由于GUID,这种types的“外部/手动维护”使得您的项目/解决scheme很容易“出现”以引用正确的项目(按名称),但是错误项目(由GUID唯一标识,通过registry中的参考解决)。 而且,在这些文件中指定相同的东西的方式还不止一种,导致了混淆(尤其是因为*.sln / *.vcproj文件本体没有很好的文档logging,也没有可能在将来得到很好的logging)。

简而言之,MSVS是一个非常不错的IDE,但是对于构build和项目pipe理/维护来说非常糟糕。 它似乎缺乏强大的中央devise。 我承认这是一个(非常)困难的问题 – 几十年来人们一直致力于“build设”,而且恕我直言的技术水平不是很好。 然而,MSVS绝对是一个“委外devise”,包括从进化到主要部分的修改。

因此,对你的问题“最正确的”答案是“否”:MSVS并不是按照你想要的来devise的(例如,维护MSVS中的解决scheme/项目configuration)。 不过,我相信微软的回应是:“我们给了你一个.NET API,供你自己回答,编写你自己的工具”。 但是,经过对这个主题的深入研究,恕我直言,没有合适的解决scheme存在这些types的工具使用这些types的API(虽然你可以跳进去,并付出很大的努力,编写自己的工具,使维护更容易。

MSVS2010变得更好了,但是对于构build和项目configurationpipe理来说,这仍然不是很好。 新的API是有帮助的,但它们很难,恕我直言,没有很好的devise。 微软很可能永远不会认真对待IDE的这一方面:它是一个IDE,旨在加速开发迭代,而不是用于构build项目和解决scheme的维护。 (如果深入MSDN论坛,可以在这个主题上find很多细节)。

必须有一个更好的方法来做到这一点。 那里有其他的工具吗?

是的,是的:对于所有构build系统,问题是“logging数据”,这是你想要的configuration:这些文件,这些定义的macros,这些命令行参数,这个目标types等。 (使用源代码签入),应该生成“实际的”构build文件/脚本。

当然,我只是描述了CMake (它从一个logging数据源文件生成“构build文件”),以及其他许多工具。 他们是你最好的select。 在这种情况下,CMake在生成*.sln*.vcproj文件方面做得很好,但是并不是很多其他工具(由于这些文件中的复杂性以及它们大部分没有很好logging的细节)。 生成*.vcproj另一个工具是qmake (这是一个很好的构buildconfigurationpipe理器工具,即使你不使用Qt库)。 另一个(类似的想法)是Google的“ gyp ”(“generate-your-projects”的缩写,它应该生成*.sln / *.vcproj文件,但是我不确定它已经准备好了“黄金时段”。

对于所有这些工具,工作stream程意味着:

  1. 更新logging数据文件;
  2. (重新)生成*.sln / *.vcproj文件。
  3. 在您的MSVS IDE或命令行版本中使用生成的*.sln / *.vcproj文件。

如果你不需要一个外部工具,而是宁愿有一个本地操作你的*.sln / *.vcproj文件的“插件”,我不知道任何东西可以帮助你(而且我“已经看了)。 这不是一个新的想法:有些工具可以在这些文件上原生地运行(比如一些人已经写和共享的“版本迁移”工具),有些人已经谈到了一个原生地将这些文件“驻扎”logging的数据,但这些文件是一个混乱,没有文档,与MSVS版本的移动目标,并没有很好地解决集中的build设设置与本地项目的集中问题,重写,所以这真的很难做到。 (目前没有这样的构build系统,它是“驻扎”MS本地文件,而不是MSVS,我不认为)。

MSVS2010使得创build这样一个插件比以前的MSVS版本“更容易”,但我不认为这样一个插件仍然存在(我也不认为这样一个通用插件有很高的成功可能性,因为什么您要求的不是MSVS的优先级,MSVS主要是IDE,而不是configurationpipe理器)。 相反,你很可能不得不深入.NET API来编写你自己的(不重要的工作和维护),或者试图依靠Visual Studio项目属性 (但我不认为这会给你什么想)。

最后,(脱离主题),我正在编写一个依赖启发式的工具来自动生成和自动维护这些types的项目依赖项,而且我正在编写*.sln / *.vcproj文件。 它还没有准备好“黄金时段”,但我会对你的具体项目configurationpipe理问题感兴趣,并且愿意分享这个工具(如果它certificate对你有用)(这是C ++中的个人爱好开发,目前是Windows ,但应该不费力地移植到Posix)。

我怀疑是否有第三方扩展程序完全符合您的要求。 不过Visual Studio 2010有一套非常强大的COM自动化接口,允许你自定义IDE的任何部分,包括configurationpipe理器,configuration,解决scheme,项目等。你可以使用任何你想要的语言,包括C#,VB6和C ++。 你甚至可以在VB脚本中写一个macros。

以下是Visual Studio 2010对象模型的graphics化概述

具体见:

configuration界面

ConfigurationManager接口

configuration界面

Solution2接口

SolutionConfiguration2接口

SolutionBuild2接口

由于这是我想知道的,我没有看到任何最近更新/这个问题的答案,我想链接到Visual Studio 2015这两个扩展。这两个最近在写作时更新,似乎很有希望。

ProjectConfigurationManager: https ://visualstudiogallery.msdn.microsoft.com/cf7efe17-ae87-40fe-a1e2-f2d61907f043 ? SRC = VSIDE

更好的configurationpipe理器: https : //visualstudiogallery.msdn.microsoft.com/d9552425-000f-468e-8b80-1c86447a5fb8

sln和vcproj文件实际上是XML文件。 我经常发现自己在文本编辑器中手动编辑它们以执行各种不同的taks,否则UI中看起来是不可能的。 用户界面通常执行不完整的操作,例如重命名项目时,并非所有条目都更新。 我通常更喜欢亲手做。

我自己并没有这样做,但是在这个URL中有一些代码的例子:

http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/5de5439a-5bd1-4a9f-aba4-b4a0e91e518e/

但是,您应该也可以查看这些信息: 构buildconfiguration

因为这表示执行这些更改可能会导致项目configuration和解决schemeconfiguration自动创build或分配。

如果你想把它作为一个插件,你可以运行,你可能需要写你自己的恐惧。

继Roger Willcocks之后,我偶然发现了Carlos Quintero的博客。 看来有趣的阅读。 除其他外,它提到了在尝试清理项目configuration时遇到的困难。

纵观微软的文档,看起来EnvDTE80自VS2005以来几乎保持不变。


编辑:看看EnvDTE100 …