问题说明

最开始我新建了一个项目A,不知道设置了什么,这个是有自动补全的。之后又建了几个项目,发现自动补全都失效。

搜到的解决方法

网上各种解决方法,比如更改Assembly-CSharp.csproj中的TargetFrameworkVersion,与自己电脑的.NET Framework版本保持一致,可惜我这里依然不生效。

还有什么下载TargetFrameworkVersion写的.NET Framework版本,我下载安装提示已安装更高版本,不让安装

与我的解决方法比较接近的是在VsCode按Ctrl + Shift + P输入OmniSharp: select project,选择项目文件

我的解决流程

通过文件对比,可以看出项目A的.sln文件要多几行内容

第一段不同

1
2
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{152411fb-37df-f0ff-193c-c41c1f943a0d}"
EndProject

{}里面那些字符串叫Guid(全球唯一标识),FAE04EC0-301F-11D3-BF4B-00C04F79EFBC表示这个项目是Windows (C#)项目

后面的Guid都是项目的Guid,在项目文件夹中的Assembly-CSharp.csproj,我们能找到一行配置

1
<ProjectGuid>{152411fb-37df-f0ff-193c-c41c1f943a0d}</ProjectGuid>

第二三段不同

这个应该是一些Debug配置,具体我没细研究,有兴趣可以自行搜索.sln文件的配置项都是干什么的

解决方法

如果你的.sln文件没有上面所说的这几行,那么问题应该就出在这

第一步

复制以下代码,把项目Guid改成你项目的Guid。第一段中的Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}")这个Guid应该可以不变。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{152411fb-37df-f0ff-193c-c41c1f943a0d}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{152411fb-37df-f0ff-193c-c41c1f943a0d}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{152411fb-37df-f0ff-193c-c41c1f943a0d}.Debug|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

两个文件的图

第二步

来到VsCode,按Ctrl + Shift + P输入OmniSharp: select project

选择项目.sln文件,回车

等一会后你会发现VsCode左下角出现.sln文件名,这样就可以了


参考

《Visual Studio 使用的 ProjectTypeGuids》
文本对比工具