linux 未找到框架“.NETFramework,Version=v4.7.1”的引用程序集

r6vfmomb  于 2022-11-22  发布在  Linux
关注(0)|答案(9)|浏览(317)

我尝试在Linux(Ubuntu 18.10)下用VSCode打开Unity3D项目,omnisharp扩展没有加载项目,说没有找到程序集。
这可能看起来很愚蠢,但我还没有真正习惯.Net,我已经被这个错误困扰了好几天了。我一直在尝试重新安装dotnet(甚至使用snap包),mono,vscode和omnisharp扩展。
所以任何帮助都是受欢迎的!:)
Unity版本:2018.3.1f1

记录档:
网络--信息

.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]

单声道--版本

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
5f0d552i

5f0d552i1#

尝试了这里提到的步骤,没有解决错误。必须将omnisharp.useGlobalMono选项更改为always。这对C# extension for VS Code=1.23.2有效。
来源:Reddit Post
你的错误输出告诉我你使用的是VS代码的官方C#扩展。该扩展的最新版本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。

qybjjes1

qybjjes12#

我也遇到了同样的问题,但在OSX上。安装最新版本的Mono清除了丢失的.net v4. 7. 1框架引用。
我从https://www.mono-project.com/download/stable安装了Mono V5.18.0

更新:参见以下关于全局omnisharp设置的注解

wr98u20j

wr98u20j3#

我也遇到了同样的情况,我在这里找到了一个变通办法:https://github.com/Microsoft/msbuild/issues/2728
您必须执行export FrameworkPathOverride=/lib/mono/4.5,然后才会找到.NETFramework。

ubbxdtey

ubbxdtey4#

我有同样的问题,这里是我如何解决它。
1.从here下载最新的稳定Mono并安装。
1.将FrameworkPathOverride添加到.bash_profile

export FrameworkPathOverride=/Library/Frameworks/Mono.framework/Versions/Current

重新启动VSCode,VSCode便可正常工作。

clj7thdc

clj7thdc5#

1.在linux的薄荷18.3西尔维亚(ubuntu 16.04)安装单开发像https://www.mono-project.com/download/stable/#download-lin。
1.然后在终端export FrameworkPathOverride=/etc/mono/4.5中执行
1.开放vs代码和作品。

zxlwwiss

zxlwwiss6#

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

export FrameworkPathOverride=/etc/mono/4.5

打开VScode,它就能工作了。这就是我在Ubuntu 20. 04的干净安装上工作的地方。

6yoyoihd

6yoyoihd7#

对于Windows 10用户:
如果仍然遇到此Omnisharp错误:

The reference assemblies for .NETFramework,Version=v4.7.1 were not found.

1.如果VS代码已打开,请将其关闭
1.下载并安装**.NETFramework 4.7.1开发人员包**
https://dotnet.microsoft.com/en-us/download/dotnet-framework/net471
(VS代码可能会建议更新版本,但截至2022年3月25日,这些版本不起作用)
1.在VS代码中重新打开Unity项目
以上步骤应能解决问题,但如果您仍有问题(例如,Intellisense无法正常工作),请尝试调整Unity设置:
1.打开您的Unity项目,单击编辑项目设置...播放器其他设置API兼容性级别(在“配置”下)
1.将API兼容性级别更改为.NET 4.x
1.重新启动Unity和VS代码

pxq42qpu

pxq42qpu8#

经过一天的研究,在ubuntu和unity.NETFRAMEWORK4.7上出了什么问题。我通过改变omnisharp:useglobalmenu到总是在VSCODE设置中来解决这个问题。这里是我找到的解决方案链接https://github.com/OmniSharp/omnisharp-vscode/issues/3613#issuecomment-677451385

xbp102n0

xbp102n09#

在较新的OmniSharp版本(用于.NET 6开发)上,“Omnisharp:使用现代的Net”选项需要被禁用。也许只为本地工作区更改它,以保持您的非Unity.NET核心项目不受影响。

  • VS代码 *:文件〉首选项〉设置(可选:〉工作区选项卡)〉Omnisharp:使用现代网络

或者,在您的主文件夹(全局设置)或项目工作区(本地设置)中更改.vscode/settings.json文件。

  • .vscode/设置.json*:{ [...] "omnisharp.useModernNet": false, [...] }

相关问题