Visual Studio - 项目显示为“杂项文件”

46
这是一个奇怪的问题。在我的解决方案中有一个C#类库项目。如果我打开这个项目中的一个`.cs`文件,代码编辑器中的“项目”下拉菜单会显示它属于“杂项文件”。
其他症状:如果我进入项目属性并查看“程序集信息”,所有值都为空,尽管这些值存在于`AssemblyInfo.cs`文件中。
这两个问题都很恼人,但问题在于:
- 我无法在项目中的任何文件上使用智能感知 - 我似乎无法使用调试器逐步执行它(它告诉我这些文件不属于该解决方案,因此无法进行调试)。
我尝试过:
- 仔细检查`.csproj`文件并将其与解决方案中的其他文件进行比较(没有找到问题) - 重新创建并覆盖旧的`.csproj`文件(在将分支合并到主干之前有效,然后问题重新出现) - 敲键盘(头疼)
谷歌没有找到答案。有人有什么想法吗?

文件是否不是项目的一部分,而只是位于您项目的文件夹中? - da_berni
它们都在.csproj中列出为<Compile Include="xxx.cs"/> - 查看了解决方案中的其他.csproj文件,但无法看到文件链接方式上的任何差异 :( - Keith Williams
3
@KeithWilliams,你解决了这个问题吗?我有一个类似的问题。 - Andrew Harry
20个回答

46

我是如何解决我的问题的:

  1. 进入解决方案资源管理器中显示为 Miscellaneous Files 的文件。
  2. 右键单击该文件并选择从项目中排除。
  3. 右键单击包含该文件的项目/文件夹,点击添加现有项,将刚才删除的文件重新添加到您的项目中。

2
+1 我在 Visual Studio 2015 中遇到了这个问题。在首先搜索为什么我的 CodeLens 中所有引用都是“0”之后,我注意到了“杂项文件”,从而找到了这里。您可以通过将它们从 .csproj 文件中注释掉,重新加载项目,然后再次卸载以取消注释行并将文件带回项目中来处理多个文件。 - user3063836
1
这在VS 2017中有效,只需排除并再次包含而不需要关闭VS。 - Ali Yousefi
2
针对谷歌搜索者试图弄清如何修复智能感知错误的问题,这是解决方案! - Chris

26

我在VS 2017也遇到了这个问题。
我发现这些miscellaneous文件是在VS之外添加的文件。因此,如果在不关闭VS的情况下切换到另一个git分支(其中有新文件)并在VS中单击“Reload”按钮(当它检查到sln / csproj文件在VS之外被修改时),那么这些新文件将不能被VS正确解析,并会被标记为miscellaneous

作为解决方法,我关闭VS,从磁盘中删除.vs文件夹,然后再次运行VS。当VS完全初始化后,这些新文件就能够成功解析。 请注意,这种方式会清除你的自定义设置,比如StartUp Project等。


删除 .vs 文件对我有帮助。但是,我不知道它的副作用... - Eray Tuncer
2
你也可以尝试卸载并重新加载包含该文件的项目,这对我至少有一次起作用。还要注意的是,几周前我没有遇到这些问题,所以肯定是最近有人引入了这个错误,因此它可能很快就会被修复。 - causa prima
同样的,这篇文章在这里 https://developercommunity.visualstudio.com/t/vs-2019-file-is-opened-under-miscellaneous-files-e/487985 也支持这一点。对我来说有效,我正在使用VS2022社区版。 - ken lacoste

14

以下是解决方案:

  • 进入工具菜单 > 选项 >(展开)环境 > 文档 (如果“文档”未出现在列表中,请在选项对话框中选择显示所有设置。)
  • 勾选“在解决方案资源管理器中显示杂项文件”,然后单击确定。 (此选项将在解决方案资源管理器中显示“杂项文件”节点。杂项文件是与项目或解决方案无关但可以出现在解决方案资源管理器中供您方便查看的文件,前提是您勾选了此选项。)
  • 在“杂项文件”下找到您的文件。然后将文件拖放到其应属位置即可完成操作。这将复制该文件到指定位置。如果您希望这样做,现在可以安全地删除“杂项文件”文件夹下的旧文件了。

13

请检查此链接:https://www.reddit.com/r/VisualStudio/comments/b8vbj8/help_netf461_project_opened_in_vs2019_all_files/

  1. 在“解决方案资源管理器”中,右键单击“引用”
  2. 选择“管理NuGet程序包”
  3. 在“已安装”选项卡下搜索“Microsoft.Net.Compilers”
  4. 选择“Microsoft.Net.Compilers”
  5. 在“Microsoft.Net.Compilers”的侧边窗口上,单击更新按钮

    • VS2015与.NET Compiler 1.x.x兼容
    • VS2017与.NET Compiler 2.x.x兼容
    • VS2019与.NET Compiler 3.x.x兼容

因此,根据您的 VS 版本更新 Microsoft.Net.Compilers 即可。


只需添加相同的问题:从在VS2017下创建并在VS2019中打开的项目中,所有新创建的对象(类、接口等)都被设置为“杂项文件”。升级到最新的3.x.x版本对我很有帮助。谢谢。 - Cladoo
对我起作用了。我正在使用VS2019和VS2022。 - ken lacoste

9
在VS2017中,我能够通过删除*.vs文件夹和*.user文件来解决这个问题。

相同,此处文章 https://developercommunity.visualstudio.com/t/vs-2019-file-is-opened-under-miscellaneous-files-e/487985 也支持此观点。对我来说有效,我正在使用 VS2022 社区版。 - ken lacoste

4

我曾经遇到过完全相同的问题,后来发现我的项目中有一些XAML文件被设置为使用“XamlAppDef”操作进行构建(即将其构建为XAML工作流),当我将其改回“Compile”时,我的项目下拉菜单立即从“杂项文件”变为了正确的项目。


3

我在从2017年升级到VS2019后遇到了这个问题。清理并重新构建解决方案可以解决它。

  1. 构建 -> 批量构建 -> 全选 -> 清理
  2. 构建 -> 批量构建 -> 全选 -> 构建

1

我在VS 2019 Community中遇到了一个与类文件相关的问题,而KING的解决方法——排除该文件并重新添加它——对我没有用。我通过以下方式解决了这个问题:

  • 将有问题的cs文件重命名
  • 右键单击项目,选择“添加”>“类…”
  • 使用与旧文件相同的名称添加新的类文件
  • 将旧重命名文件的内容复制并粘贴到新文件中,覆盖默认内容
  • 删除旧重命名文件

1

这对我有用:

  • 检查命名空间是否正确给出。
  • 转到文件 > 关闭解决方案,然后重新打开解决方案。

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

1
当您在项目中添加新文件时,有时Visual Studio会将其添加到<itemGroup>中的<Compile Remove>,以便该文件不会被编译并且不会随构建文件一起复制。这对于例如node_module文件非常有用。
  <ItemGroup>
    <Compile Remove="Controllers\StockController.cs" />
  </ItemGroup>

你只需要打开*.csproj文件并将其删除。

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