是否有Visual Studio配置管理器的替代/插件?

ili*_*ian 36 .net plugins projects-and-solutions visual-studio-2010

我需要在visual studio中删除和重命名一系列解决方案/项目配置,是否有任何工具可以帮助解决这个问题?

我发现内置工具非常无用.例如,当我从解决方案中删除配置时,它将拒绝删除相关的项目配置,以防其他地方需要它们.同时重命名解决方案配置不会重命名其相关配置.

必须有更好的方法来做到这一点.还有其他替代工具吗?

cha*_*ley 16

我需要在visual studio中删除和重命名一系列解决方案/项目配置,是否有任何工具可以帮助解决这个问题?

简答: 不.

答案很长: 排序(例如,您将集成不完整的"帮助程序"工具,并编写自定义脚本/工作来创建/集成到您的配置管理过程中).

编辑评论:很好的问题,很多人都遭遇了这种情况(正如你的问题的"赞成"所指出的那样),我们都会喜欢一个好的答案.

我发现内置工具非常无用.例如,当我从解决方案中删除配置时,它将拒绝删除相关的项目配置,以防其他地方需要它们.同时重命名解决方案配置不会重命名其相关配置.

同意 - 内置工具非常无益.很难维护许多具有不同配置和依赖关系的项目和解决方案,特别是对于不同的目标类型/平台.它具有像它使用多个的GUID的项目idiosyncracies,设置-的-文件和项目类型,这是存储在注册表中,并从内部访问*.sln*.vcproj.该工具将尝试使用这些唯一标识符"修复"自身,取消您的更改,并忽略其自身的某些值,以"修复"项目/解决方案之间的连接.这导致您的注册表和配置文件中存在大量"残缺",如果您将文件检入到版本控制系统中,则会对文件进行不必要的更改,以及文件的许多部分将被"忽略"的情况,甚至虽然你(正确)做出了这些改变.一些数据,如" 项目名称 "和" 项目配置名称 "和" 项目平台名称 "有时是多余的,有时不是.由于的GUID,这种类型的"外部/手动维护"使得它很容易为你的项目/解决方案"出现",以引用正确的项目(名字),但错误的项目(如GUID,这是唯一标识通过注册表中的引用解决).而且,还有更比一的方式来指定同样的事情,在这些文件中,从而导致混乱(特别是自*.sln/ *.vcproj文件本体是不是有据可查的,也可能较多在未来证明).

简而言之,MSVS是一个相当不错的IDE,但对构建和项目管理/维护来说非常糟糕. 它似乎缺乏强大的中央设计.我承认这是一个(非常)难题 - 几十年来人们一直致力于"建设",而恕我直言,最先进的技术并不是很好.然而,MSVS绝对是"委员会设计",包括通过主要的现场修订进化而来.

因此,对您的问题的"最正确"答案是"不":MSVS不是为了满足您的需求而设计的(例如,维护MSVS中的解决方案/项目配置).但是,我确信微软的回应是,"我们为您提供了一个.NET API,供您自己回答并编写自己的工具".然而,经过对这个话题,恕我直言,没有合适的解决方案存在这些类型的使用这些类型的API工具伟大的研究(尽管你可以跳,并以极大的努力,编写自己的工具,使保养更容易.)

MSVS2010变得更好,但它仍然不适合构建和项目配置管理.新的API很有帮助,但它们很难,恕我直言设计得不好.最有可能的是,Microsoft永远不会认真地解决IDE的这个方面:它是一个IDE,旨在加速开发迭代,而不是用于构建项目和解决方案维护.(如果深入研究MSDN论坛,可以在这个主题上找到很多细节).

必须有更好的方法来做到这一点.还有其他替代工具吗?

是,是的:对于所有构建系统,问题是"记录数据",这是您想要的配置:这些文件,这些定义的宏,这些命令行参数,此目标类型等.来自(使用您的源代码检查),应生成"实际"构建文件/脚本.

当然,我刚刚描述了CMake(从记录数据源文件生成"构建文件")以及许多其他工具.他们是你最好的选择.在这种情况下,CMake的不生成一个良好的工作*.sln*.vcproj文件,但不是很多的其他工具将(这是有点难以由于这些文件中的复杂性,他们基本上没有,证据充分的细节).生成相当好的另一个工具*.vcprojqmake,(这是一个很好的构建配置管理器工具,即使你不使用Qt库).另一个(类似的想法)是谷歌的" gyp "("生成你的项目"的缩写,它应该生成*.sln/ *.vcproj文件,但我不确定它是否准备好了"黄金时间".

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

  1. 更新记录数据文件;
  2. (重新)生成*.sln/ *.vcproj文件.
  3. 在MSVS IDE或命令行构建中使用生成的*.sln/ *.vcprojfiles.

如果你不想要一个外部工具,但宁愿有一个本地操作你*.sln/ *.vcproj文件的某种"插件" ,我也不知道有什么可以帮助你(我看过).这不是一个新的想法:一些工具可以对这些文件(如"版本的迁移"工具的一些人都写和共享)本机操作,而有的人谈到了构建系统原生"预占"这些文件记录数据,但这些文件有点混乱,没有文档记录,并且是关于MSVS版本的移动目标,并没有很好地解决集中构建设置与本地项目的集中问题 - 覆盖,所以这很难做到.(目前没有这样的构建系统存在于MSF本地文件的"驻留",我不认为.)

MSVS2010使得这种插件创建"更容易"比以前MSVS释放,但我不认为这样的插件还不存在(我也不认为这样的通用插件有成功的可能性很高,因为什么您要求的不是MSVS的优先级,MSVS主要是IDE,而不是配置管理器.相反,你很可能不得不深入研究.NET API来编写自己的(非平凡的工作和维护),或者尝试依靠Visual Studio Project Properties(但我不认为这会给你什么想).

最后,(题外话),我在写这样的一个工具,它依赖于启发式自动生成和自动维护这些类型的项目依赖,和我目前正在写出*.sln/ *.vcproj文件.这是没有准备好"黄金时间",但我很想在你的具体项目配置管理问题,并愿意分享工具(S)如果证明对你有用的(这是个人爱好发展,C++,目前的Windows ,但应该轻松移植到Posix).

  • +“不是Visual Studio的优先级”为+100。我见过其他情况,他们只是简单地遵循“使用MSBuild,这很好”。最终最终很难。 (2认同)

Tho*_*eod 6

我怀疑是否有第三方扩展功能完全符合您的要求.但是,Visual Studio 2010具有一组非常强大的COM自动化接口,允许您自定义IDE的任何部分,包括配置管理器,配置,解决方案,项目等.您可以使用任何您想要的语言,包括C#,VB6和C++.您甚至可以在VB脚本中编写宏.

以下是Visual Studio 2010对象模型的图形概述

特别是看:

配置界面

ConfigurationManager接口

配置界面

Solution2接口

SolutionConfiguration2接口

SolutionBuild2接口


Rog*_*cks 0

我自己不必这样做,但在如何将“debug”和“release”重命名为另一个名称(例如“Debugstatic”)中的代码中有一些在我使用新的自定义向导 RRS feed 时执行此操作的示例。

但是,您可能还应该查看以下信息:

了解构建配置

因为它表明执行此类更改可能会导致自动创建或分配项目配置和解决方案配置。

如果您希望将其作为可以运行的加载项,恐怕您可能需要编写自己的加载项。

  • 请注意不要发布 .NET 1.1 链接,除非该信息特定于 .NET 1.1。否则,读者可能会通过一连串的旧链接找到不再最好的信息。 (2认同)