我正在尝试在我的Debian 9服务器上托管ASP.NET Core应用程序。我以前安装过.NET Core 1,并且一直在尝试安装.NET 2.1的运行时/宿主。
我遵循official installation instructions进行分发,但是dotnet --version
命令输出1.0.1,而dotnet --info
输出
.NET Command Line Tools (1.0.1) Product Information: Version: 1.0.1 Commit SHA-1 hash: 005db40cd1 Runtime Environment: OS Name: debian OS Version: 9 OS Platform: Linux RID: debian.8-x64 Base Path: /opt/dotnet/sdk/1.0.1
当我尝试仅运行已复制到服务器的基本模板应用程序时,它会输出
The specified framework 'Microsoft.NETCore.App', version '2.1.0' was not found. - Check application dependencies and target a framework version installed at: /opt/dotnet/shared/Microsoft.NETCore.App - The following versions are installed: 1.1.1 1.0.4 - Alternatively, install the framework version '2.1.0'.
当然,/opt/dotnet/shared/Microsoft.NETCore.App
仅包含1.1.1和1.0.4的子目录,但是...
$ sudo apt install aspnetcore-runtime-2.1 [sudo] password for root: Reading package lists... Done Building dependency tree Reading state information... Done aspnetcore-runtime-2.1 is already the newest version (2.1.2-1).
我该怎么办才能找到运行时?
回答评论中的问题:
$ which dotnet /usr/local/bin/dotnet
dpkg -L的输出相当长,但是我认为这给我带来了问题的原因。 2.1运行时的文件都位于/usr/share/dotnet
下,而不是/opt/dotnet
下。运行dotnet
使用的是/usr/local/bin
中的那个,它可以看到旧的运行时,但是看起来有一个/usr/bin/dotnet
可以看到新的版本……我按照微软的指示进行了两次安装,因此我不确定为什么如此不同。
答案 0 :(得分:1)
在命令行上输入dotnet
时,shell将在$PATH
中寻找它。您似乎安装了两个dotnet
命令,一个位于/usr/local/bin/dotnet
,另一个位于/usr/bin/dotnet
。 /usr/local/bin/
首先出现在您的$PATH
中,因此当您键入/usr/local/bin/dotnet
时,shell将运行dotnet
。
/usr/local/bin/dotnet
是指向/opt/dotnet/dotnet
的符号链接。该版本包含2个.NET Core运行时版本(如dotnet --info
所示):1.0.4和1.1.1。听起来这是用户手动安装的,可能是从发行版压缩包中提取到/opt/dotnet
的。
(这些版本已经过时。它们还包含已知的安全漏洞)
/usr/share/dotnet/
由dotnet-*
和aspnetcore*
软件包通过apt
安装。并且包含verison 2.1软件包。
您有两种方法可以解决此问题:
如果/usr/local/bin/dotnet
不属于包管理器(dpkg --search /usr/local/bin/dotnet
未列出包),则只需rm
即可。然后dotnet
表示/usr/share/dotnet/dotnet
。您也可以删除/opt/dotnet
。
如果/usr/local/bin/dotnet
由包管理器拥有,请在dpkg --search
输出中找到包的名称,然后删除该包。
您可以在$PATH
(或等效的shell配置文件)中覆盖.bashrc
。添加一行export PATH=/usr/bin:/usr/local/bin:/bin:/usr/game
。
我强烈建议您选择选项1。
我不确定为什么将两者安装在不同的位置并使用不同的可执行文件。也许在您安装的版本发布后,更改了安装说明并提供了软件包?