Visual Studio - 无法删除项目配置

53


我在项目配置方面遇到了一个重大问题。一切都始于我想要添加一个新的解决方案配置(名为“Dev_WithSource”),基于现有的“Debug”配置,并勾选“创建项目配置”。出于某种原因,项目配置已被注册在sln文件中,在Configuration Manager中正确显示,但是csproj文件中的“PropertyGroup Condition”块没有被创建。这导致了“OutputPath未设置...”错误。

因此,我尝试重复整个过程。在从sln文件中删除所有提到“Dev_WithSource”的行之后,“Dev_WithSource”项目配置仍然显示在配置管理器中。我搜索了解决方案中的所有csproj和sln文件。它们都不包含文本“Dev_WithSource”。

在所有这些之后,我甚至尝试开发插件。我可以使用project.ConfigurationManager.ConfigurationRowNames获取虚拟配置,但我也无法删除它们。 我错过了什么吗?那些配置存储在csproj / sln之外的其他文件中吗?

谢谢。


你尝试过删除/重命名相应的 .user 文件吗? - yms
那些文件在哪里?我有与解决方案文件同名的.suo、.vsscc和5.1.Resharper.User文件。至于项目,我只有csproj和vspscc文件。 - Filip
10个回答

100
  1. 有两种方式访问配置管理器:

    1. 从顶部菜单中选择:生成 > 配置管理器...
    2. 从主工具栏显示您的配置的下拉列表中选择 配置管理器...
  2. 在配置管理器对话框中,在 活动方案配置: 下拉列表中选择 <编辑...>

    Configuration Manager

  3. 一个对话框会打开,显示您解决方案的所有配置。在这里,您可以选择并单击 删除 按钮。

    Edit Solution Configurations


44
这将从解决方案中删除配置,但不会删除项目“如果它们仍然在使用中”。 - stannius
9
@stannius,您可能需要查看https://dev59.com/xHRB5IYBdhLWcg3w26t3。 - nawfal
14
移除所有项目中的“Release”配置:Get-Project -All | Foreach { $_.ConfigurationManager.DeleteConfigurationRow("Release") } - Alireza
1
@Alireza,你能解释一下在VS中如何运行这个命令吗?我猜是PowerShell吧? - Jon Barker
5
请打开“工具”菜单,选择“Nuget程序包管理器”,再选择“程序包管理器控制台”,在控制台窗口中执行命令。 - Alireza

35
  1. 右键单击->使用要删除的配置卸载项目。
  2. 右键单击->直接编辑项目文件xml。
  3. 删除包含名称为平台/配置的条件的属性组。
  4. 保存并重新加载项目。不需要的配置应该已经被删除了。
  5. 如果配置似乎设置正确但OutPutPath仍然是“未设置”,请尝试将其propertygroup标记在xml中向上移动。

3
我希望有更简单的方法(也许有),但不幸的是,这就是我最终做的方式。 - kd7iwp
"VS Commands for .Net" 将步骤1和2合并为一个步骤。它还为VS添加了一些其他UI增强功能。非常推荐使用。 - Martin Clemens Bloch
这对于小型解决方案来说很好用,但如果您有一个包含多个项目的大型解决方案,并且某些源文件也被排除在某些构建之外,那么这是一个非常糟糕的选择。 - AndersK
1
请检查@Alireza的解决方案,使用Get-Project -All | Foreach - Giulio Caccin

28

假设您想从整个解决方案和项目中删除“发布”配置。首先,您需要前往 工具 -> Nuget程序包管理器 -> 程序包管理器控制台

将以下命令复制并粘贴到控制台中,以从所有项目中删除构建。您可能需要将“发布”替换为要删除的配置名称。

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

最后,按照 Mike Grimm 的回答解释的方式,逐个删除配置方案。


7
如果你想知道在哪里执行这个命令:请到 工具->Nuget程序包管理器->程序包管理器控制台,然后在控制台窗口中执行。 - Oz Solomon
6
同样地,你可以使用DeletePlatform方法来移除平台。例如: Get-Project -All | Foreach { $_.ConfigurationManager.DeletePlatform("Any CPU") } - Tone
1
这才是真正的答案! - Patrick Parker
1
我大约一年前点赞了这个帖子,现在又回来了,因为我需要在一个包含100多个项目的解决方案中删除配置。这个答案实际上可以完全满足我的需求。@Tone关于DeletePlatform的评论也非常有帮助。当我在VS2019中执行此操作时,每个涉及的项目都会显示一个“COMException”。但是更改仍然按预期进行。 - grek40
@grek40 异常不会是问题 - 正如您正确提到的那样。但是,如果有人对此过于挑剔,重新启动 Visual Studio 可以防止出现异常-从记忆中。 - Alireza
复制粘贴时要小心!!!如果在末尾包含换行符,则会执行。 - jeyko

25

我知道这是一个旧的帖子,但这对我来说是答案:

在“配置管理器”中,选择每个项目的“Configuration”列中的“Edit...”(不是通过名为“Active solution configuration”的下拉列表)以删除要删除的配置。

在弹出的对话框中,标记每个不需要的配置并选择“Remove”。

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


在VS 2019中对我有用。 - franji1
这就是方法。虽然浏览多个项目仍然很繁琐,但至少我不再通过文本文件修改项目了。 - d_w_
这就是方法。虽然处理多个项目仍然有些乏味,但至少我不再通过文本文件修改项目了。 - d_w_

4

你需要从解决方案和项目中移除配置。从“配置管理器”开始:

  1. 活动解决方案配置 > 编辑 > 移除
  2. 项目上下文 > 配置 > 编辑 > 移除

3

我用一个工具解决了这个问题,该工具解析csproj文件并将必要的propertygroup块插入到csproj文件中。旧项目配置仍然出现在“配置管理器”中,但我放弃尝试删除它们。


0

虽然这个链接可能回答了问题,但最好在这里包含答案的关键部分,并提供链接供参考。仅有链接的答案可能会因为链接页面的更改而失效。- 来自评论 - undefined

0

在Visual Studio for MAC中 -

  1. 双击您的解决方案 > 配置 > 通用。
  2. 在列表中单击要删除的“ConfigToRemove”,然后选择“删除”(确保您还选中了解决方案项中的配置),然后选择“是”。
  3. 单击“确定”以保存更改。
  4. 现在,右键单击解决方案和工具 > 编辑文件。
  5. 转到“GlobalSection(SolutionConfigurationPlatforms)= preSolution”,然后删除所有不再需要的配置,否则它们仍将显示在配置映射中,即使项目中没有映射!
  6. 保存并完成。

0
在我的情况下,问题是解决方案文件不在与项目文件相同的文件夹中,因此我不得不将NuGet文件夹复制到解决方案文件夹中以解决此问题。

0

我知道我有点晚了,但这里是完整的解决方案。 要从解决方案和项目属性中完全删除配置,请在任何IDE中以纯文本格式打开.sln文件,并删除有关配置的所有信息。 注意-不要删除GUID值和调试/发布配置 然后以XML格式打开.vcxproj文件,并删除有关配置的所有信息。这包括它的基本属性、平台工具集和XML语言中的相关属性元素。 注意-确保删除结束标记。 当您回到Visual Studio时,点击替换全部,就可以了。


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