首页 文章

是否有任何GAC等效的.NET Core?

提问于
浏览
16

正如我在完整的.NET Framework中理解的那样,当我们将框架安装到机器时,它将整个BCL部署到计算机的GAC . 通过这种方式,当我们使用.NET开发软件并部署到该计算机时,它将使用安装.NET Framework本身时在GAC中提供的BCL程序集 .

现在,我知道CoreFX相当于新.NET Core的BCL . 然而,主要区别在于我们可以在 project.json 中指定我们需要的CoreFX的哪些部分 .

我的问题是:当我们部署.NET Core应用程序时, 生产环境 环境中是否有任何GAC等价物?因此,当我们部署要执行的应用程序时,计算机中是否有任何中心位置,应用程序将查看整个CoreFX是否可用?

2 回答

  • 16

    Edit 2017-09-01

    有点类似于GAC,.NET Core 2.0引入了“Runtime package store”:

    从.NET Core 2.0开始,可以根据目标环境中存在的一组已知软件包打包和部署应用程序 . 在某些情况下,优点是更快的部署,更低的磁盘空间使用和更高的启动性能 . 此功能实现为运行时包存储,它是存储包的磁盘上的目录(通常位于macOS / Linux上的/ usr / local / share / dotnet / store和Windows上的C:/ Program Files / dotnet / store) .


    您正在寻找"Framework-dependent deployment" . 来自the docs

    您可以为.NET Core应用程序创建两种类型的部署:依赖于框架的部署 . 顾名思义,依赖于框架的部署(FDD)依赖于目标系统上存在的共享系统范围的.NET Core版本 . 由于.NET Core已经存在,因此您的应用程序也可以在.NET Core的安装之间移植 . 您的应用程序仅包含自己的代码以及.NET Core库之外的任何第三方依赖项 . FDD包含.dll文件,可以使用命令行中的dotnet实用程序启动 . 例如,dotnet app.dll运行名为app的应用程序 . 自包含部署 . 与FDD不同,自包含部署(SCD)不依赖于目标系统上存在的任何共享组件 . 所有组件(包括.NET Core库和.NET Core运行时)都包含在应用程序中,并与其他.NET Core应用程序隔离 . SCD包括可执行文件(例如Windows平台上的app.exe,名为app的应用程序),它是特定于平台的.NET Core主机的重命名版本,以及.dll文件(例如app.dll),它是实际应用 .

  • 5

    不,没有,不是你想到GAC的方式 . 核心应用程序旨在彼此隔离,因此您可以修补一个而不必担心影响其他应用程序 . 您随应用程序发送了所需的所有软件包 .

    有一个服务目录可用于为Core组件提供更新,但它是完全交换它们,而不是启用并行版本控制,它仅适用于通过Microsoft Update发布的更新 .

相关问题