什么导致Visual Studio 2017中出现空文件名

4

我的一些项目无法正确加载文件。在解决方案资源管理器中,它们的文件名为 null。我仍然可以编译并正常工作,但无法从此视图打开它们。它显示“无法打开文件”。

Solution Explorer

如果我使用“显示所有文件”来扩展视图,我可以看到它们存在,但被认为是项目中排除的。就像它们同时被包含和排除一样。重新包含它们无效。

Showing All Files

该项目和筛选器文件似乎不是损坏的。我甚至手动编辑它们也无济于事。以下是VCXPROJ文件的片段:
<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文件的另一个相关片段:
<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>

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

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

有什么想法吗?


“.vcxproj.filters” 是什么样子? - user7860670
看起来同样有效。我会包含一个相关的片段。正如我所说,我尝试编辑甚至完全替换它,但都没有成功。 - KRFournier
如果您将这些文件包含到另一个项目中,会发生什么情况?可能会导致文件本身损坏或损坏。 - Lord_Curdin
1个回答

2
问题似乎与.vs子文件夹中的某些类型的损坏有关。由于我不使用Visual Studio内置的源代码控制,我只需删除该文件夹并重新加载解决方案即可。现在一切都恢复正常了。
线索是这样的:在手动删除一个空文件之后(直接编辑.vsproj,并从解决方案文件夹中删除文件),我尝试使用类向导重新添加类。然而,Visual Studio坚称该类已经存在,尽管没有任何来源提到它。看来通过源代码控制维护了一个不可见的引用。我简直不能相信我之前没考虑过.vs。
无论如何,我希望这能帮助未来的其他人。

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