我正在尝试让 vscode 启用统一的 c# 代码完成,如下this https://code.visualstudio.com/docs/other/unity指南显示。我曾有一个problem https://stackoverflow.com/q/62111273/13118680早些时候,由于某种原因安装了 .NET 目标包,但没有安装 SDK,有人可以帮助我解决这个问题。但是,我仍然收到错误消息,提示无法找到参考程序集。我已经重新安装了开发人员包、.NET SDK 和目标包,重新启动了计算机,并卸载/重新安装了扩展。日志显示我可能必须重新定位应用程序但这非常模糊,我找不到任何关于如何做到这一点的指南。感谢您的帮助。
编辑:我尝试将目标框架更改为 4.8,但omnisharp 有相同的错误日志,但我也安装了不同的版本。这可能是拥有多个驱动器的问题吗?
.csproj目标框架:
v4.7.1
Omnisharp 错误日志:
于 2020 年 5 月 31 日晚上 7:56:50 启动 OmniSharp 服务器
目标:a:\Github\Unity\2_Terminal_Hacker\2_Terminal_Hacker.sln
OmniSharp 服务器已启动。
路径:c:\Users\0dps1.vscode\extensions\ms-dotnettools.csharp-1.22.0.omnisharp\1.35.2\OmniSharp.exe
PID:5544
[信息]:OmniSharp.Stdio.Host
在 Windows 6.2.9200.0 (x64) 上启动 OmniSharp [信息]:OmniSharp.Services.DotNetCliService
DotNetPath 设置为 dotnet [信息]:OmniSharp.MSBuild.Discovery.MSBuildLocator
找到 2 个 MSBuild 实例
1:Visual Studio 社区 2019 16.6.30114.105 - “A:\Program Files\Microsoft Visual
Studio\2019\Community\MSBuild\Current\Bin"
2:独立 16.4 -“c:\Users\0dps1.vscode\extensions\ms-dotnettools.csharp-1.22.0.omnisharp\1.35.2.msbuild\Current\Bin”
[信息]:OmniSharp.MSBuild.Discovery.MSBuildLocator
已注册的 MSBuild 实例:Visual Studio Community 2019 16.6.30114.105 - "A:\Program Files\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin" [信息]:
OmniSharp.Cake.CakeProjectSystem
检测“a:\Github\Unity\2_Terminal_Hacker”中的 Cake 文件。 [信息]:OmniSharp.Cake.CakeProjectSystem
找不到任何 Cake 文件 [信息]:OmniSharp.MSBuild.ProjectSystem
检测“a:\Github\Unity\2_Terminal_Hacker\2_Terminal_Hacker.sln”中的项目。 [信息]:
OmniSharp.MSBuild.ProjectManager
“a:\Github\Unity\2_Terminal_Hacker\Assembly-CSharp.csproj”的队列项目更新[信息]:
OmniSharp.Script.ScriptProjectSystem
检测“a:\Github\Unity\2_Terminal_Hacker”中的 CSX 文件。 [信息]:OmniSharp.Script.ScriptProjectSystem
找不到任何 CSX 文件 [信息]:OmniSharp.WorkspaceInitializer
调用工作区选项提供程序:OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider,
订单:0 [信息]:OmniSharp.MSBuild.ProjectManager
加载项目:a:\Github\Unity\2_Terminal_Hacker\Assembly-CSharp.csproj [信息]:
OmniSharp.WorkspaceInitializer
调用工作区选项提供程序:OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider,
订单:100 [信息]:OmniSharp.WorkspaceInitializer
调用工作区选项提供程序:OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider,
订单:110 [信息]:OmniSharp.WorkspaceInitializer
调用工作区选项提供程序:OmniSharp.Roslyn.CSharp.Services.BlockStructureWorkspaceOptionsProvider,
订单:140 [信息]:OmniSharp.WorkspaceInitializer
配置完成。 [信息]:OmniSharp.Stdio.Host
Omnisharp 服务器在主机 4260 上的“a:\Github\Unity\2_Terminal_Hacker”位置使用 Stdio 运行。[失败]:
OmniSharp.MSBuild.ProjectLoader
找不到 .NETFramework,Version=v4.7.1 的参考程序集。要解决此问题,请安装开发人员包(SDK/Targeting
Pack)适用于此框架版本或重新定位您的应用程序。你可以
下载 .NET Framework 开发包:https://aka.ms/msbuild/developerpacks https://aka.ms/msbuild/developerpacks[警告]:
OmniSharp.MSBuild.ProjectManager
无法加载项目文件“a:\Github\Unity\2_Terminal_Hacker\Assembly-CSharp.csproj”。
a:\Github\Unity\2_Terminal_Hacker\Assembly-CSharp.csproj A:\Program
文件\微软视觉
Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(1177,5):
错误:.NETFramework,Version=v4.7.1 的参考程序集是
未找到。要解决此问题,请安装开发人员包(SDK/Targeting
Pack)适用于此框架版本或重新定位您的应用程序。你可以
下载 .NET Framework 开发包:https://aka.ms/msbuild/developerpacks https://aka.ms/msbuild/developerpacks
[失败]:OmniSharp.MSBuild.ProjectManager
尝试更新未加载的项目:a:\Github\Unity\2_Terminal_Hacker\Assembly-CSharp.csproj
https://learn.microsoft.com/en-us/dotnet/standard/frameworks https://learn.microsoft.com/en-us/dotnet/standard/frameworks
如果打开 .csproj 文件,您将看到“TargetFramework”标记,并且在其中显示链接中的可能值之一。 “重定向”意味着将“目标框架”值从“net471”更改为“net46”。
不幸的是,由于这是 Unity 项目,Unity 喜欢完全控制 csproj 文件的内容,您所做的任何更改都只是暂时的。因此,您可以重新定位某个目标并使错误消失,但 Unity 稍后会随心所欲地将其恢复为“net471”。
您的选择是:
修复 .net sdk /vscode 安装是否可以获得目标包。您可以尝试在 VS 社区中打开解决方案,也许它会从 UI 提供修复
Unity 在播放器设置中有一个内置下拉菜单,可以针对 net2 或类似的内容而不是 net471,但那是 c#/net 的非常古老的版本。它最近可能已被完全弃用。
进行 hacks 将自己注入到 unity csproj 生成中,以便它始终使用您拥有的某个版本(不推荐)
编辑 - 是的,实际上很可能是多个驱动器问题。我从您的日志中看到 Visual Studio Community 安装在 A:\drive 上。参考程序集通常位于“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework”中。因此,MSBuild.exe 寻找这些内容的位置与目标包实际安装的位置很可能不匹配。
除了尝试在 C:\ 上的默认位置安装 VS 之外,我真的不知道如何解决此问题 - 可能有一些神奇的环境变量可以设置为触发 MSBuild 在正确的位置查找。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)