asp.net上的asp.net核心2.1无法运行

时间:2018-06-04 21:59:06

标签: linux asp.net-core configuration .net-core archlinux

我在Arch Linux上使用pacman安装了最新版本的.net核心:

sudo pacman -S dotnet-sdk

正在运行dotnet --info会显示正确的版本:

Host (useful for support):
  Version: 2.1.0
  Commit:  caa7b7e2ba

.NET Core SDKs installed:
  2.1.0 [/opt/dotnet/sdk]
  2.1.300 [/opt/dotnet/sdk]

我可以运行控制台应用程序,但是当我在ASP.NET Core目录中运行dotnet run时会返回以下错误:

  

无法找到任何兼容的框架版本   指定的框架' Microsoft.AspNetCore.App',版本' 2.1.0'是   没找到。

为什么虽然版本似乎匹配,但它不会运行?

更多详情:

ls /opt/dotnet/sdk/返回:

2.1.300  NuGetFallbackFolder

.csproj文件的内容:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

</Project>

6 个答案:

答案 0 :(得分:2)

Arch目前不支持.NET Core,因此无法保证它可以正常工作。目前,64位支持以下发行版:

  • Red Hat Enterprise Linux 7,6
  • CentOS 7
  • Oracle Linux 7
  • Fedora 27
  • Debian 9,8.7或更高版本
  • Ubuntu 18.04,17.10,16.04,14.04
  • Linux Mint 18,17
  • openSUSE 42.3或更高版本
  • SUSE Enterprise Linux(SLES)12 Service Pack 2或更高版本
  • Alpine Linux 3.7或更高版本

有关详细信息,请参阅this page

您可以在dotnet repos中看到与Arch相关的这些问题:

https://github.com/dotnet/coreclr/issues/4409

https://github.com/dotnet/corefx/issues/19447

https://github.com/dotnet/core-setup/issues/3845

答案 1 :(得分:1)

我没有针对您的问题的正确解决方案,但可能是一种解决方法。我使用的是基本的os和.net core 2.1工作正常,但我注意到我的元数据包的路径与你的不同:

.NET Core SDK (reflecting any global.json):
 Version:   2.1.300
 Commit:    adab45bf0c

Runtime Environment:
 OS Name:     elementary
 OS Version:  0.4.1
 OS Platform: Linux
 RID:         linux-x64
 Base Path:   /usr/share/dotnet/sdk/2.1.300/

Host (useful for support):
  Version: 2.1.0
  Commit:  caa7b7e2ba

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

您可以尝试将元数据包从安装文件夹/opt/dotnet/shared复制到/usr/share/dotnet/shared

这个人在这里使用Fedora有类似的问题:https://github.com/dotnet/core-setup/issues/4022

答案 2 :(得分:1)

这个问题很老了,但如果有人试图让 .NET 5 在 Arch 上运行,这可以为您提供另一种解决方案。

如果您构建、发布和运行指定平台运行时的项目,dotnet 将构建一个自包含的应用程序,具有所有必要的平台特定依赖项。

您可以使用 --runtime/-r 标志来做到这一点。

Arch 示例:

dotnet build -r linux-x64
dotnet run -r linux-x64
dotnet publish -r linux-x64

有关可用的运行时标识符,请参阅 Microsoft 文档: Neo4j Cypher: exclude certain nodes from result


编辑:

我在使用 AUR 包而不是 Snap 的路径时遇到的问题较少:

https://docs.microsoft.com/en-us/dotnet/core/rid-catalog


编辑 2:

安装 AUR 的 aspnet-runtime-bin 包后,所有关于 Microsoft.AspNetCore.App not be found 的错误都消失了,没有使用 --runtime 标志:

https://aur.archlinux.org/packages/dotnet-sdk-bin/


答案 3 :(得分:0)

@ tura08回答是错误的,因为 .NET Core 应该像其他所有Linux系统一样在 Arch Linux 上运行。

我遇到了同样的问题所以我只是报告了它https://github.com/dotnet/core-setup/issues/4216并且似​​乎 dotnet-sdk 包缺少 aspnetcore-runtime-2.1 依赖项。我给维护者写了一封电子邮件,所以我希望他能尽快修好。

答案 4 :(得分:0)

我在尝试安装全局工具时遇到了类似的问题。创建符号链接对我有用:

ln -s /opt/dotnet/ /usr/share/dotnet

答案 5 :(得分:0)

升级所有软件包可以解决问题:

pacman -Syu

它包含dotnet-sdk程序包2.1.300-2,于2018-06-12 11:24 UTC更新: https://www.archlinux.org/packages/community/any/dotnet-sdk/