【问题标题】:How to prevent an accompanying C# project from showing up in Visual Studio如何防止伴随的 C# 项目出现在 Visual Studio 中
【发布时间】:2026-01-11 00:00:01
【问题描述】:

我正在浏览具有以下层次结构的 Visual Studio 2010 C# 解决方案(不是我的):

root solution folder\  
    solution.sln  
    project1 folder\  
        project1.proj  
    project2 folder\  
        project2.proj  

如果我忽略 solution.sln 文件夹并直接双击 project1.proj 文件,我仍然可以在 Visual Studio 会话的解决方案资源管理器窗格中看到另一个项目 (project2)过来!我可以让 project2 不再出现在 project1 的 Visual Studio 会话中的唯一方法是完全删除 solution.sln 文件。

是什么让.proj 文件知道存在于别处的解决方案文件(在这种情况下,是上一层)?

【问题讨论】:

    标签: c# visual-studio-2010


    【解决方案1】:

    由于项目文件不包含对其“父”解决方案文件的引用,因此很明显这种行为是设计使然,并且已用于许多版本。

    Visual Studio 会扫描所请求项目文件的目录,并在必要时扫描父目录,直到它遇到并可以打开关联的解决方案文件(即包含对项目文件的引用的 .sln 文件)。

    如果找不到合适的 .sln 文件,则会在内存中创建该文件,并在退出时提示您保存自动创建的 .sln 文件。

    验证此行为的一种方法是将单独的项目文件夹(从解决方案文件夹中)复制并粘贴到不相关的位置(例如您的桌面)并打开项目文件。 Visual Studio 已自动将您的项目“包装”在解决方案中,并标有问号,退出时会询问您是否保存更改。

    所以从 Visual Studio 的角度来看,没有孤立的项目。有些解决方案包含项目。

    作为参考,这里是the MSDN page on Solutions and Projects

    【讨论】:

    • 维姆,谢谢。我已经接受了你的回答,正如你所说,由于项目文件不包含对另一个解决方案文件的引用,因此必须有另一个解释。但是,您是否有任何 MSDN 链接说明了这种行为?另外:在 Visual Studio 2010 中,我没有看到 Visual Studio 新创建的包装解决方案的问号。
    • @Sabuncu 我在 VS2013 中看到了问号,但我相信你的话,它在 VS2010 中不存在。无论如何,这不过是眼睛糖果。
    • @Sabuncu 行为本身并没有说明,而是由 .sln 文件的内容暗示(如我的答案中的 MSDN 链接所述):解决方案文件包含(除其他外)其中引用的项目的构建配置。如果没有构建配置,您的 IDE 将只不过是一个美化的文本编辑器,因为当您按下 F6 时它不知道该做什么......
    • 我会检查我在其他地方安装的 2013 年安装的问号!谢谢。
    【解决方案2】:

    在解决方案资源管理器窗格中右键单击项目文件并选择New Solution Explorer View。然后你就可以只浏览那个项目了。

    【讨论】:

    • 虽然这是一个查看特定项目的解决方案,但没有包含其他解决方案,但它实际上并没有回答 OP 帖子最后一句中的问题,因此应该是评论.对不起。
    • @WimOmbelets 你也可以在右键弹出菜单中卸载项目2。
    • Snowell,在 Visual Studio 2010 (Ultimate) 中,当我右键单击项目文件夹时,不会显示您提到的选项。仅供参考。