找不到框架“ .NETFramework,Version = v4.7.1”的参考程序集

时间:2019-01-26 17:35:21

标签: c# linux unity3d mono omnisharp

我尝试在Linux(Ubuntu 18.10)下使用VSCode打开Unity3D项目。 omn​​isharp扩展无法加载项目,表示未找到程序集。

这似乎是很愚蠢的,但是我还不太习惯.Net,而且我在相当长的一段时间里一直被这个错误困扰。 我一直在尝试重新安装dotnet(甚至使用snap软件包),mono,vscode和omnisharp扩展。

因此欢迎任何帮助! :)

统一版本:2018.3.1f1

日志:

dotnet-信息

.NET Core SDK (reflecting any global.json):
 Version:   2.2.103
 Commit:    8edbc2570a

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.10
 OS Platform: Linux
 RID:         ubuntu.18.10-x64
 Base Path:   /usr/share/dotnet/sdk/2.2.103/

Host (useful for support):
  Version: 2.2.1
  Commit:  878dd11e62

.NET Core SDKs installed:
  2.2.103 [/usr/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.2.1 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.2.1 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.2.1 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

单--version

Mono JIT compiler version 4.6.2 (Debian 4.6.2.7+dfsg-1ubuntu1)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  amd64
    Disabled:      none
    Misc:          softdebug 
    LLVM:          supported, not enabled.
    GC:            sgen

完整日志错误:

    Starting OmniSharp server at 1/26/2019, 7:13:55 PM
    Target: /home/eyap/Projects/Unity/TestProject/TestProject.sln

OmniSharp server started.
    Path: /home/eyap/.vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/run
    PID: 30136

[info]: OmniSharp.Stdio.Host
        Starting OmniSharp on ubuntu 18.10 (x64)
[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 1 MSBuild instance(s)
            1: StandAlone 15.0 - "/home/eyap/.vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        MSBUILD_EXE_PATH environment variable set to '/home/eyap/.vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin/MSBuild.dll'
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Registered MSBuild instance: StandAlone 15.0 - "/home/eyap/.vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin"
            MSBuildExtensionsPath = /home/eyap/.vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild
            BypassFrameworkInstallChecks = true
            CscToolPath = /home/eyap/.vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin/Roslyn
            CscToolExe = csc.exe
            MSBuildToolsPath = /home/eyap/.vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin
            TargetFrameworkRootPath = /usr/lib/mono/xbuild-frameworks
[info]: OmniSharp.Cake.CakeProjectSystem
        Detecting Cake files in '/home/eyap/Projects/Unity/TestProject'.
[info]: OmniSharp.Cake.CakeProjectSystem
        Could not find any Cake files
[info]: OmniSharp.WorkspaceInitializer
        Project system 'OmniSharp.DotNet.DotNetProjectSystem' is disabled in the configuration.
[info]: OmniSharp.MSBuild.ProjectSystem
        Detecting projects in '/home/eyap/Projects/Unity/TestProject/TestProject.sln'.
[info]: OmniSharp.MSBuild.ProjectManager
        Queue project update for '/home/eyap/Projects/Unity/TestProject/Assembly-CSharp.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
        Detecting CSX files in '/home/eyap/Projects/Unity/TestProject'.
[info]: OmniSharp.Script.ScriptProjectSystem
        Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
        Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpWorkspaceOptionsProvider
[info]: OmniSharp.WorkspaceInitializer
        Configuration finished.
[info]: OmniSharp.Stdio.Host
        Omnisharp server running using Stdio at location '/home/eyap/Projects/Unity/TestProject' on host 30056.
[info]: OmniSharp.MSBuild.ProjectManager
        Loading project: /home/eyap/Projects/Unity/TestProject/Assembly-CSharp.csproj
[fail]: OmniSharp.MSBuild.ProjectLoader
        The reference assemblies for framework ".NETFramework,Version=v4.7.1" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend.
[warn]: OmniSharp.MSBuild.ProjectManager
        Failed to load project file '/home/eyap/Projects/Unity/TestProject/Assembly-CSharp.csproj'.
/home/eyap/Projects/Unity/TestProject/Assembly-CSharp.csproj
/home/eyap/.vscode/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin/Microsoft.Common.CurrentVersion.targets(1195,5): Error: The reference assemblies for framework ".NETFramework,Version=v4.7.1" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend.

[fail]: OmniSharp.MSBuild.ProjectManager
        Attemped to update project that is not loaded: /home/eyap/Projects/Unity/TestProject/Assembly-CSharp.csproj

7 个答案:

答案 0 :(得分:24)

尝试了此处提到的步骤,但没有解决该错误。必须将omnisharp.useGlobalMono选项更改为always。这适用于C# extension for VS Code=1.23.2

来源:Reddit Post

您的错误输出告诉我您正在使用官方的C#扩展名 VS Code。该扩展程序的最新版本1.23.2具有 在其更改日志中说:

For Mono-based development (e.g. Unity) that requires full .NET framework, you need to set "omnisharp.useGlobalMono": "always". This
在Mono升级其捆绑的MSBuild版本之前,需要

默认设置自动不起作用。切换到始终 重新启动扩展。或者,您可以降级到1.23.1。

答案 1 :(得分:8)

我遇到了同样的问题,这是我的解决方法。

  1. here下载最新的稳定版Mono,然后安装。

  2. 将FrameworkPathOverride添加到.bash_profile

ƒ () {
  if (!arguments.length) return;
  var callback = arguments[arguments.length - 1];

  if (callback && typeof callback === 'function') {
    callback(null, '0.0.0.0');
  }
}

重新启动VSCode即可。

答案 2 :(得分:3)

我在OSX上遇到了同样的问题。安装最新版本的Mono可以清除缺少的.net v4.7.1框架参考。

我从https://www.mono-project.com/download/stable/安装了Mono V5.18.0

希望它对您有用。

答案 3 :(得分:3)

  1. 在Linux Mint 18.3 Sylvia(ubuntu 16.04)中,像https://www.mono-project.com/download/stable/#download-lin那样安装mono-devel。

  2. 然后在终端export FrameworkPathOverride=/etc/mono/4.5

  3. 中执行
  4. 打开vs代码即可正常工作。

答案 4 :(得分:1)

我处在相同的情况下,在这里找到了一种解决方法:https://github.com/Microsoft/msbuild/issues/2728

您必须export FrameworkPathOverride=/lib/mono/4.5,然后将找到.NETFramework。

答案 5 :(得分:0)

在Linux Mint 18.3 Sylvia(Ubuntu 16.04)中,安装像https://www.mono-project.com/download/stable/#download-lin这样的mono-devel。 然后在终端中执行

export FrameworkPathOverride=/etc/mono/4.5

打开VScode,它可以工作。这对于干净安装Ubuntu 20.04的我来说是有效的。

答案 6 :(得分:0)

经过一天研究出了什么问题。在 ubuntu 和 unity 上使用 .NETFRAMEWORK 4.7。我通过将 omnisharp:useglobalmenu 更改为 always inside VSCODE 设置解决了这个问题。这是我找到的解决方案链接 how-to-pass-header-jwt-token-with-axios-react