【问题标题】:How to install multiple versions of .NET Core side by side on ubuntu如何在 ubuntu 上并排安装多个版本的 .NET Core
【发布时间】:2021-11-25 19:46:29
【问题描述】:

我们有一个应用程序,用 .NET Core rc2 编写,在验收环境(Linux 服务器)上运行。 最近我们的客户运行了他们自己的性能测试,结果完全破坏了应用程序。由于以下几个原因,我们无法自己复制它:

  1. 我们在 windows 上开发
  2. 我们已经从 rc2 迁移到 1.0.0。

在 Windows 上,我们无法在新版本 (1.0.0) 或 rc2 中重现。 所以我们尝试在linux机器上重现它。在 1.0.0 上,我们也无法重现他们的结果,但是当我们尝试针对 rc2(显然是我们的应用程序的旧版本)进行实际测试时,我们遇到了一个非常烦人的问题:我似乎无法安装1.0.0 和 rc2 并排,即使错误消息暗示它是可能的。 以下是错误信息

The specified framework 'Microsoft.NETCore.App', version '1.0.0-rc2-3002702' was not found.
  - Check application dependencies and target a framework version installed at:
      /usr/share/dotnet/shared/Microsoft.NETCore.App
  - The following versions are installed:
      1.0.0
  - Alternatively, install the framework version '1.0.0-rc2-3002702'.

基本上,我们希望能够在 linux 机器上接受我们的应用程序 (rc2) 时检查当前运行的版本,但我们正在努力在其上实际获取 rc2。

谢谢。如果有任何不清楚的地方,请在 cmets 中发布您的问题。

编辑: 我尝试将其构建为独立部署,但随后出现以下错误:

Errors in /home/nicolaas/Projects/digipolis-survey-engine/Digipolis.FormEngine/Digipolis.FormEngine.Response.API/project.json
    System.AppContext 4.1.0-rc2-24027 provides a compile-time reference assembly for System.AppContext on .NETCoreApp,Version=v1.0, but there is no run-time assembly compatible with ubuntu.15.10-x64.
    System.Runtime.InteropServices.RuntimeInformation 4.0.0-rc2-24027 provides a compile-time reference assembly for System.Runtime.InteropServices.RuntimeInformation on .NETCoreApp,Version=v1.0, but there is no run-time assembly compatible with ubuntu.15.10-x64.
    One or more packages are incompatible with .NETCoreApp,Version=v1.0 (ubuntu.15.10-x64).

这是意料之中的,因为机器上实际上没有安装rc2,我想在linux机器上构建它

【问题讨论】:

  • 你试过standalone deployment .Net core 选项了吗?
  • 我没有。以前没想到...我现在试试,谢谢!
  • 您找到解决问题的方法了吗?
  • @Sharif 对不起,我们没有。如果我没记错的话,我们找到了一种解决方法(基本上只是启动另一个只安装了特定版本的虚拟机)
  • 是的,这几乎就是我正在做的一种解决方法。

标签: ubuntu .net-core


【解决方案1】:

【讨论】:

  • 另一个不错的维基帖子wiki.archlinux.org/index.php/.NET_Core
  • 在 Fedora 上,我必须安装在与当前 SDK 相同的文件夹中...dotnet --list-sdks3.1.201 [/usr/share/dotnet/sdk]。使用命令./dotnet-install.sh -Version 2.1.805 --install-dir /usr/share/dotnet
  • @DaviFiamenghi 谢谢!在 Ubuntu 20.10 上的工作就像一个魅力。
【解决方案2】:

这对我们有用。

  1. 将多个版本的 dotnet 运行时安装到不同的目录。

  2. 对于最新的运行时安装,为每个较旧的运行时添加符号链接。例如,对于较旧的运行时 1.1.2,我们创建符号链接 /path/to/dotnet-latest/shared/Microsoft.NETCore.App/1.1.2 --> /path/to/dotnet-1.1.2/shared/Microsoft .NETCore.App/1.1.2

  3. 从最新的运行时安装运行 dotnet,它应该会选择适当的运行时。

请注意,这等同于 Windows 安装程序所发生的情况。新的运行时将添加到共享安装中。通过在 sdk 子目录中添加适当的符号链接,可以使用类似的方法从单个安装中获得对多个 sdk 的支持。

【讨论】:

    【解决方案3】:

    https://dotnet.microsoft.com/download/dotnet 下载 tar.gz 包 并使用以下命令安装软件包:

    mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-6.0.100-preview.3.21202.5-linux-x64.tar.gz -C $HOME/dotnet
    export DOTNET_ROOT=$HOME/dotnet
    export PATH=$PATH:$HOME/dotnet
    

    scound 版本会添加到 sdks 文件夹中,您可以通过运行确认安装:

    dotnet --list-sdks
    

    我发现所有其他解决方案无用且难以使用,dotnet-install 脚本非常难以使用且毫无意义。

    【讨论】:

    • 对我来说这是最简单的解决方案。不用担心符号链接等。
    【解决方案4】:

    根据 Mohammad 的回答(效果很好),下面是一个更完整的并排安装 dotnet 5 和 3.1 的示例:

    env DOTNET_ROOT=/usr/share/dotnet
    env PATH=$PATH:usr/share/dotnet
    env DOTNET_SDK_VERSION=5.0.401
    env DOTNET_SDK_VERSION2=3.1.413
       
    curl -SL --output dotnet.tar.gz https://dotnetcli.azureedge.net/dotnet/Sdk/$DOTNET_SDK_VERSION/dotnet-sdk-$DOTNET_SDK_VERSION-linux-x64.tar.gz \
        && dotnet_sha512='a444d44007709ceb68d8f72dec0531e17f85f800efc0007ace4fa66ba27f095066930e6c6defcd2f85cdedea2fec25e163f5da461c1c2b8563e5cd7cb47091e0' \
        && echo "$dotnet_sha512  dotnet.tar.gz" | sha512sum -c - \
        && mkdir -p /usr/share/dotnet \
        && tar -zxf dotnet.tar.gz -C /usr/share/dotnet \
        && rm dotnet.tar.gz \
        #&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
        # Trigger first run experience by running arbitrary cmd
        && dotnet help
    
    curl -SL --output dotnet.tar.gz https://dotnetcli.azureedge.net/dotnet/Sdk/3.1.413/dotnet-sdk-3.1.413-linux-x64.tar.gz \
        && dotnet_sha512='2a0824f11aba0b79d3f9a36af0395649bc9b4137e61b240a48dccb671df0a5b8c2086054f8e495430b7ed6c344bb3f27ac3dfda5967d863718a6dadeca951a83' \
        && echo "$dotnet_sha512  dotnet.tar.gz" | sha512sum -c - \
        #&& mkdir -p /usr/share/dotnet31 \
        && tar -ozxf dotnet.tar.gz -C /usr/share/dotnet \
        && rm dotnet.tar.gz \
        #&& ln -s /usr/share/dotnet31/dotnet /usr/bin/dotnet31 \
        # Trigger first run experience by running arbitrary cmd
        && dotnet help
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2021-11-15
      • 2016-03-23
      • 2014-11-20
      • 1970-01-01
      相关资源
      最近更新 更多