如何在Visual Studio 2008中删除项目配置?

107

我有一个Visual Studio 2008的解决方案,其中我导入了许多现成的项目。这些项目是混合语言的示例代码(C#,VB,C++/CLI)。它们目前具有多个配置文件,但我希望每个项目只有一个“Debug”配置。

在配置管理器中,我删除了其他配置文件(例如“Release”),但在我这样做时,会有一个警告消息提示我它们不会从各个项目中删除。

实际上,当我导航到单个项目时,它仍然具有“Release”和其他配置文件,即使在解决方案级别上只有“Debug”。

我该如何最好地从每个项目中删除这些额外的配置?我是否忽略了 GUI 中的某种方法来完成此操作,还是应该直接编辑项目文件?

6个回答

213
在配置管理器中,对于每个具有所需移除配置的项目(不通过名为“活动解决方案配置”的下拉菜单),在“配置”列中选择“编辑...”。
在弹出的对话框中,标记每个不需要的配置,并选择“删除”。

25
谢谢!我希望Visual Studio提供一种更快捷的方式,在所有项目中删除一个配置。如果在一个解决方案中有十几个项目,那么逐个手动删除每个项目的配置会很繁琐。 - Stefano Ricciardi
1
@Matthias 我不同意。而且,它从2009年我回答这个问题到2013版本都没有改变过。 - Timbo
2
如果我进入配置管理器,通过编辑删除一个活动解决方案配置,那么该配置确实会从配置管理器中删除。但是,如果您现在转到项目的属性,则该配置仍然存在。如果您查看 .vcxproj 文件,则该配置仍然存在。我使用的是 Visual Studio 2013(专业版和旗舰版)。 - Matthias
1
@Matthias 仔细阅读(特别是“对于每个项目”部分)。也许我回答中的词汇选择/顺序并不是最适合理解的,但这并不影响其是否有效。 - Timbo
1
@Stefano Ricciardi 五年过去了,你找到解决这种痛苦的方法了吗? - cppBeginner
显示剩余4条评论

17

使用Nuget控制台命令访问Visual Studio API是自动从解决方案的所有项目中删除配置的最佳方法。

进入工具Nuget程序包管理器程序包管理器控制台

然后使用以下命令:

Get-Project -All | Foreach { $_.ConfigurationManager.DeleteConfigurationRow("Release") }

通过这种方式,您已经删除了所有名为"Release"的项目中的所有配置。 我强烈建议您始终检查源代码版本控制系统上的差异,您将只会看到csproj和在某些情况下sln文件受到影响,如果您正在使用配置转换(例如Web.Release.config),它们仍将存在。

更多信息可在此处的Visual Studio特定版本API文档中获取,此功能适用于至少VS 2015的C ++,C#,F#,VB语言。


在我的C++解决方案中,无法在VS2019中工作: 从对COM组件的调用返回了错误HRESULT E_FAIL。 在第1行第30个字符处:
  • ... | Foreach { $_.ConfigurationManager.DeleteConfigurationRow("DLL-Impor ... + CategoryInfo : OperationStopped: (:) [], COMException
    • FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
从对COM组件的调用返回了错误HRESULT E_FAIL。 在第1行第30个字符处:
  • ... | Foreach { $_.ConfigurationManager.DeleteConfigurationRow("DLL-Impor ...
- Terry
2
对我来说很有效,解决了C++项目的问题。感谢这个提示! - Nordic Mainframe
当我使用VS2019进行C++和C#项目时,这对我非常有效。在不得不使用GUI之前,我很高兴找到了这篇文章。我尽量避免使用VS2019,并且最终只用它来进行调试。@Giulio Caccin,您是否知道是否可以通过此API编辑预先存在的配置名称?我查看了文档,但对我来说并不特别清晰。 - Andy
1
刚刚再次查看了API,似乎不可能通过访问方法获取集合名称,因为其访问方式受到限制。请参考https://learn.microsoft.com/en-us/dotnet/api/envdte.configurations.name?view=visualstudiosdk-2019#EnvDTE_Configurations_Name。 - Andy
1
@Terry - 我成功地遇到了这个错误,但它发生在一个使用较旧版本的Visual Studio创建且未更新的项目上。这也可能是影响你的问题。 - Andy
显示剩余3条评论

15
为了帮助说明timbo的答案,这是他所说的内容。就像其他评论者一样,我找了很久才找到这个。
这里有一个链接,可以查看相关图片:enter image description here

3

虽然这并不是回答这个具体问题的方法,但在使用VS2013时,您可以打开属性管理器选项卡,展开所有项目配置,通过CTRL或SHIFT键进行多重选择,并一次性从多个项目中删除配置。


这只针对C++项目吗?我猜你指的选项卡是“视图>其他窗口>属性管理器”? - Steven Anderson
这在VS2017中完美运行。我只想在多个项目中保留两个C++配置(Debug|Release+Win32|x64),因此我展开了属性管理器中的所有项目,单击顶部配置,向下滚动并Shift-单击底部配置,然后使用Ctrl-单击来取消选择要保留的配置。您还必须取消选择项目名称,否则删除将不会出现在菜单中。然后右键单击所选(未取消选择)配置并选择“删除”。最后,转到“项目”->“配置管理器”并删除配置。 - UweBaemayr

1
在VS2017/VS2019中,如果你下拉“活动解决方案配置”,那里有一个<edit>,它可以让你从所有项目中删除一个配置。

展示<edit>的截图


这将从解决方案中删除配置,但不会从每个项目中删除。 - Alex Angas

0
VS2022现在在“编辑解决方案配置”屏幕上提供了一个复选框,用于“从所有未使用的项目中删除已删除的配置”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接