.net - Visual Studio 的配置管理器有替代/插件吗?

标签 .net visual-studio-2010 plugins projects-and-solutions

我需要在 Visual Studio 中删除和重命名一组解决方案/项目配置。有没有工具可以帮助解决这个问题?

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

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

最佳答案

I have the need to remove and rename a selection of solution/project configurations in Visual Studio. Is there a tool which will help with this?



简答:

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

编辑评论:很好的问题。很多人都经历过这种情况(正如对您问题的“赞成”所指出的那样),我们都希望得到一个好的答案。

I'm finding the built-in tool very unhelpful. For example, when I delete a configuration from a solution it will refuse to delete the related project configurations just in case they are needed elsewhere. Also renaming a solution configuration will not rename its related configurations.



同意 - 内置工具非常无用。维护许多具有不同配置和依赖项集的项目和解决方案非常困难,尤其是对于不同的目标类型/平台。它有一些特性,比如对项目、文件集和项目类型使用多个 GUID,这些 GUID 存储在注册表中,并从 *.sln 内部访问。和 *.vcproj .

该工具将尝试使用这些唯一标识符“修复”自己,取消您的更改,并忽略其自身的一些值,以“修复”项目/解决方案之间的连接。这会导致您的注册表和配置文件中有很多“垃圾”,如果您将文件 checkin 版本控制系统,则会对文件进行不必要的更改,以及文件的许多部分将被“忽略”的情况,甚至尽管您(正确地)进行了这些更改。

诸如“项目名称”和“项目配置名称”和“项目平台名称”之类的一些数据有时是多余的,有时则不是。由于 GUID,这种类型的“外部/手动维护”使您的项目/解决方案很容易“出现”引用正确的项目(按名称),但引用错误的项目(由 GUID 唯一标识,这是通过注册表中的引用解决)。

而且,在这些文件中指定相同内容的方法不止一种,导致混淆(特别是因为 *.sln/*.vcproj 文件本体没有很好的文档记录,将来也不可能有详细的文档记录) )。

简而言之,Visual Studio 是一个相当不错的 IDE,但对于构​​建和项目管理/维护来说却很糟糕。 它似乎缺乏强大的中央设计。我承认这是一个(非常)困难的问题——人们几十年来一直致力于“构建”,恕我直言,最先进的技术并不是很好。然而,Visual Studio 绝对是一个“委员会设计”,包括从演变到主要现场修订的残余。

因此,对您的问题的“最正确”答案是“否”:Visual Studio 的设计目的不是满足您的要求(例如,在 Visual Studio 中维护解决方案/项目配置)。但是,我确信 Microsoft 的回应是,“我们为您提供了一个 .NET API,供您提出自己的答案并编写自己的工具”。然而,经过对这个主题的大量研究,恕我直言,对于使用这些类型的 API 的这些类型的工具,不存在合适的解决方案(尽管您可以跳进去,并付出很大的努力,编写自己的工具以简化维护。)

Visual Studio 2010 变得更好了,但它对于构建和项目配置管理仍然不是很好。新的 API 很有帮助,但它们很困难,恕我直言,设计得不好。最有可能的是,Microsoft 永远不会认真解决 IDE 的这一方面:它是一个 IDE,旨在加速开发迭代,而不是用于构建项目和解决方案维护。 (如果您深入 MSDN 论坛,可以找到有关此主题的更多详细信息。)

There must be a better way of doing this. Are there alternative tools out there?



是的,是的:对于所有构建系统,问题在于“记录数据”,这是您想要的配置:这些文件、这些定义的宏、这些命令行参数、该目标类型等。来自那(与您的源代码一起 checkin ),应该生成“实际”构建文件/脚本。

当然,我只是描述了CMake (从记录数据源文件生成“构建文件”),以及许多其他工具。他们是你最好的选择。在这种情况下,CMake 在生成 *.sln 方面做得很好。和 *.vcproj文件,但不是很多其他工具会(由于这些文件的复杂性,以及它们大部分没有很好记录的细节,这有点困难)。

另一个可以很好地生成 *.vcproj 的工具是 qmake ,(这是一个很好的构建配置管理器工具,即使您不使用 Qt 库)。另一个(类似的想法)是 Google 的“gyp”(“generate-your-projects”的缩写,它应该生成 *.sln/*.vcproj 文件,但我不确定它是否已准备好迎接“黄金时间”。

对于所有这些工具,工作流程意味着:
  • 更新记录数据文件;
  • (重新)生成 *.sln/*.vcproj文件。
  • 使用生成的 *.sln/*.vcproj Visual Studio IDE 或命令行构建中的文件。

  • 如果您不想要外部工具,而是希望有某种“插件”可以在您的 *.sln 上本地运行/*.vcproj文件,我不知道有什么可以帮助你(我已经看过了)。

    这不是一个新想法:存在一些工具来对这些文件进行 native 操作(例如一些人编写和共享的“版本迁移”工具),并且一些人谈到了 native “驻扎”这些文件的构建系统作为记录数据,但这些文件有点乱,没有记录,并且是关于 Visual Studio 版本的移动目标,并且不能很好地解决本地项目集中build设置的集中问题-覆盖,所以这真的很难做到。 (目前不存在这样的构建系统,它“支持”Microsoft native 文件,除了 Visual Studio,我不认为。)

    Visual Studio 2010 比以前的 Visual Studio 版本让创建这样一个插件“更容易”,但我认为这样的插件还不存在(我也不认为这样一个通用的插件有很高的成功可能性,因为你所要求的不是 Visual Studio 的优先级,它主要是一个 IDE,而不是一个配置管理器)。相反,您很可能必须深入研究 .NET API 来编写自己的(非平凡的工作和维护),或者尝试依靠 Visual Studio Project Properties (但我认为这不会给你你想要的)。

    最后,(题外话),我正在编写这样一个工具,它依赖启发式来自动生成和自动维护这些类型的项目依赖项,我目前正在写出 *.sln/*.vcproj文件。它尚未为“黄金时间”做好准备,但我会对您的特定项目配置管理问题感兴趣,并且如果证明对您有用,我愿意分享该工具(这是 C++ 的个人爱好开发,目前是 Windows ,但应该毫不费力地移植到 POSIX)。

    关于.net - Visual Studio 的配置管理器有替代/插件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971481/

    相关文章:

    javascript - 使用 Select2 而不是实际选择时不会触发 WooCommerce 事件

    c# - 如何从线程中停止 Windows 服务应用程序?

    visual-studio-2010 - Visual Studio 2010 可以帮助在 Visual Studio 中查看吗?

    c++ - 我应该使用 CFPlugin 还是 dlopen() 作为 OSX 上的 C++ 插件

    .NET WSDL 生成 xs :choice name the Choice Binding Enums

    visual-studio - 什么是 Visual Studio 在做演示时使用的深色主题?

    jquery - 私有(private)方法以字符串形式返回

    c# - 在 AppDomain 的设置和拆卸上创建包装器

    c# - .NET v4.7 中不存在 TLS1.2

    asp.net - 在 ASP MVC 3 RC 和 .NET 4 中使用 Request.Unvalidated() 验证请求