是啥导致 Visual Studio 2017 中的文件名为空

Posted

技术标签:

【中文标题】是啥导致 Visual Studio 2017 中的文件名为空【英文标题】:What is causing null file names in Visual Studio 2017是什么导致 Visual Studio 2017 中的文件名为空 【发布时间】:2017-10-10 17:19:17 【问题描述】:

我的一些项目无法正确加载文件。在解决方案资源管理器中,它们具有空文件名。我仍然可以正常编译和工作,但是我无法从这个视图中打开它们。它说,“无法打开文件。”

如果我使用“显示所有文件”展开视图,我可以看到它们存在但被视为已从项目中排除。就像它们同时被包含和排除一样。重新包含它们不起作用。

项目和过滤器文件似乎没有损坏。我什至手动编辑它们无济于事。这是来自 VCXPROJ 文件的 sn-p:

<ItemGroup>
  <ClCompile Include="JsonTest.cpp" />
  <ClCompile Include="NumberTest.cpp" />
  <ClCompile Include="stdafx.cpp">
    <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
    <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
    <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
    <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
  </ClCompile>
  <ClCompile Include="StringArrayTest.cpp" />
  <ClCompile Include="StringTest.cpp" />
  <ClCompile Include="WStringArrayTest.cpp" />
  <ClCompile Include="WStringTest.cpp" />
</ItemGroup>

这是一个类似相关的 .filters 文件的 sn-p:

<ItemGroup>
  <ClCompile Include="stdafx.cpp">
    <Filter>Source Files</Filter>
  </ClCompile>
  <ClCompile Include="SrpString.cpp">
    <Filter>Source Files</Filter>
  </ClCompile>
  <ClCompile Include="SrpJson.cpp">
    <Filter>Source Files</Filter>
  </ClCompile>
  <ClCompile Include="SrpNumber.cpp">
    <Filter>Source Files</Filter>
  </ClCompile>
  <ClCompile Include="decNumber\decQuad.c">
    <Filter>DecNumber</Filter>
  </ClCompile>
</ItemGroup>

我尝试了很多方法来解决这个问题,但都没有成功。

    以管理员身份运行 Visual Studio 2017 删除和重新添加文件 从头开始重新创建解决方案 将文件夹中的所有文件重新强制为只读 检查所有文件的权限:我确实拥有完全权限

有什么想法吗?

【问题讨论】:

.vcxproj.filters 长什么样子? 它看起来同样有效。我将包括一个相关的 sn-p。正如我所说,我试图编辑甚至完全替换它,但无济于事。 如果您将文件包含到另一个项目中,那么会发生什么? evtl 是文件本身损坏或损坏。 【参考方案1】:

问题似乎与 .vs 子文件夹中的某种类型的损坏有关。由于我没有使用 Visual Studio 的内置源代码管理,我只是删除了该文件夹并重新加载了解决方案。现在一切都恢复正常了。

线索是这样的:在手动删除其中一个空文件(直接编辑 .vsproj,并从解决方案文件夹中删除文件)后,我尝试使用类向导重新添加类。然而,Visual Studio 坚持认为该类已经存在,尽管任何来源都没有提及它。似乎通过源代码管理无形地维护了一个参考。我不敢相信在此之前我没有考虑 .vs。

无论如何,我希望这对将来的其他人有所帮助。

【讨论】:

以上是关于是啥导致 Visual Studio 2017 中的文件名为空的主要内容,如果未能解决你的问题,请参考以下文章

是啥导致 Visual Studio 调试器使某些问题无法重现?

在 Visual Studio 2015 中重命名时导致“无法解决的冲突”的原因是啥?

Visual Studio 2017 导致问题

Visual Studio 2017 中的 TypeScript:自动定义包含导致重复标识符错误

^ 在 Visual Studio C++ 中是啥意思? [复制]

由于 Visual Studio 次要升级而导致的运行时依赖性