hel*_*ich 5 linux .net-core asp.net-core
我正在尝试在我的 Debian 9 服务器上托管 ASP.NET Core 应用程序。我之前安装了 .NET Core 1,并且一直在尝试安装 .NET 2.1 的运行时/托管。
我已经按照我的发行版的官方安装说明进行操作,但是dotnet --version
命令输出 1.0.1,并dotnet --info
输出
.NET 命令行工具 (1.0.1) 产品信息: 版本:1.0.1 提交 SHA-1 哈希:005db40cd1 运行环境: 操作系统名称: debian 操作系统版本:9 操作系统平台:Linux RID:debian.8-x64 基本路径:/opt/dotnet/sdk/1.0.1
当我尝试仅运行已复制到服务器的基本模板应用程序时,它会输出
未找到指定的框架“Microsoft.NETCore.App”,版本“2.1.0”。 - 检查应用程序依赖项并定位安装在以下位置的框架版本: /opt/dotnet/shared/Microsoft.NETCore.App - 安装了以下版本: 1.1.1 1.0.4 - 或者,安装框架版本“2.1.0”。
果然,/opt/dotnet/shared/Microsoft.NETCore.App
只包含 1.1.1 和 1.0.4 的子目录,然而……
$ sudo apt install aspnetcore-runtime-2.1 [sudo] 根密码: 阅读包裹清单...完成 构建依赖树 读取状态信息...完成 aspnetcore-runtime-2.1 已经是最新版本 (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
查看新版本的……我按照 Microsoft 的说明进行了两次安装,所以我不确定为什么它如此不同。
当您dotnet
在命令行中输入时,您的 shell 会在您的$PATH
. 您似乎dotnet
安装了两个命令,一个 at /usr/local/bin/dotnet
,另一个 at /usr/bin/dotnet
。/usr/local/bin/
出现在您的第一个中,$PATH
因此/usr/local/bin/dotnet
当您键入dotnet
.
/usr/local/bin/dotnet
我怀疑是/opt/dotnet/dotnet
. 该版本包含 2 个 .NET Core 运行时版本(如 所示dotnet --info
):1.0.4 和 1.1.1。听起来这是由用户手动安装的,可能是通过从发布 tarball 中提取到/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
在您的.bashrc
(或等效的 shell 配置文件)中进行覆盖。添加像export PATH=/usr/bin:/usr/local/bin:/bin:/usr/game
.
我强烈推荐选项 1。
我不知道为什么这两个安装在不同的位置和不同的可执行文件。也许在您安装的版本发布后,安装说明发生了变化并且软件包可用?
归档时间: |
|
查看次数: |
11748 次 |
最近记录: |