首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在发布.NET核心3.1Lambda到亚马逊网络服务时,我应该使用"--self-contained true“吗?

在发布.NET Core 3.1 Lambda函数到AWS时,使用--self-contained true选项是一个不错的选择,但具体是否使用取决于你的需求和部署策略。

基础概念

--self-contained true选项告诉.NET Core发布工具创建一个独立的可执行文件,该文件包含了运行应用程序所需的所有依赖项,而不依赖于目标机器上安装的.NET Core运行时。

相关优势

  1. 减少依赖:不需要在目标环境中预先安装.NET Core运行时。
  2. 简化部署:发布后的包更易于管理和部署。
  3. 提高兼容性:确保应用程序在任何安装了相应.NET Core版本的机器上都能运行。

类型与应用场景

  • 独立发布:适用于需要在不同环境中运行的应用程序,尤其是那些无法保证目标机器上安装了正确版本的.NET Core运行时的情况。
  • 框架依赖发布:如果你的应用程序部署在一个已知安装了.NET Core运行时的环境中,可以选择不使用--self-contained true以减小发布包的大小。

遇到的问题及解决方法

问题:发布后的Lambda函数运行时出现依赖缺失错误。

原因:可能是由于某些依赖项没有正确包含在发布包中。 解决方法

  1. 确保所有必要的NuGet包都已添加到项目中。
  2. 使用dotnet publish命令时加上--self-contained true选项。
  3. 检查.csproj文件中的<PackageReference><ProjectReference>确保所有依赖都被正确引用。

示例代码

代码语言:txt
复制
dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true

这条命令会发布一个针对Linux x64平台的独立版本,同时启用单文件发布和代码修剪以减小包的大小。

注意事项

  • 使用--self-contained true会增加发布包的大小,因为它包含了整个.NET Core运行时。
  • 如果你的Lambda函数需要频繁更新,考虑使用框架依赖发布以减少每次更新的传输量。

总之,如果你的部署环境不确定或者你想简化部署流程,使用--self-contained true是一个好的选择。如果部署环境已知且稳定,可以考虑不使用该选项以优化性能和减少包大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Deploy】记一次Linux程序部署(Python与Dotnet Core)

pm2来守护我们的应用程序,在比较了其他守护进程工具之后,觉得pm2真心简单好用,pm2依赖node.js,所以需要安装node.js,使用许多方法,目测下面命令是最简单有效的。...Core Runtime 3.1 发布应用 .Net Core有两种发布方式,一种是依赖运行时,其要求服务器必须安装.Net Core Runtime,一种是Self-contained(自包含),...Core Self-contained $dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishSingleFile...=false -p:PublishTrimmed=true -o publish-linux-x64 由于我们是发布至Centos,所以选择了RID:linux-x64 ,按照官方的说法,这个RID:...Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" #BOOTPROTO="dhcp" #IP的配置方法[none|static|bootp|dhcp](引导时不使用协议

1.1K10
  • 【译】.NET Core 3.0 发布小尺寸 self-contained 单体可执行程序

    .NET Core 提供的发布应用程序选项 self-contained 是共享应用程序的好方法,因为应用程序的发布目录包含所有组件、运行时和框架。....NET Core 3.0 中发布 self-contained 程序可以使用下面的命令: dotnet publish -r win-x64 -c Release --self-contained...该发布标志的使用方法如下: dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true 或者在项目文件中配置如下节点: 在 .NET Core 3.0 Preview 6 中引入了 PublishTrimmed 发布标志,使用该发布选项将不会包含您未使用的类库,以达到减小发布单体文件的尺寸。...对于简单的控制台应用程序来说,它仍然有点儿大,但请注意,这是一个包含了 .NET Core 运行时的 self-contained 应用程序。 ? 以上就是我要介绍的全部内容了。

    69620

    在.NET 6.0中发布单个Exe文件(PublishSingleFile)

    假设我有一个简单的“ Hello World”控制台应用程序,我想发送给朋友来运行。朋友没有安装.NET Core,所以我知道我需要为他构建一个独立的应用程序。...很简单,我只需在项目目录中运行以下命令: dotnet publish -r win-x64 -c Release --self-contained 朋友是多少位的操作系统,你就标记要发布成什么样子的,...293个文件,这直接将.NET Core的运行时也打包了,这非常Nice!不过我这文件真的很多,我很难受!朋友会说:这什么鬼?exe在哪里?  ...所以.NET Core给我们提供了一个命令标志, dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true 您会注意到,我们不再指定自包含标志...使用命令 dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true 我们拭目以待吧。

    6.7K30

    在多个可执行程序(exe)之间共享同一个私有部署的 .NET 运行时

    然而,如果你的项目会生成多个 exe 程序,那么他们每个独立发布时,互相之间的运行时根本不互通。即便编译时使用完全相同的 .NET 框架(例如都设为 net6.0),最终也无法共用运行时文件。...不看其他文件): - Walterlv.Demo.exe - Walterlv.Updater.exe + 1.2.1 - Walterlv.SubProcess.exe 那么,以上这些 exe 是应该发布成...项目在 GitHub 上开源:dotnet-campus/dotnetCampus.AppHost 使用方法 第一步:在 exe 入口项目上安装 NuGet 包:dotnetCampus.AppHost...只有在需要生成 AppHost 的时候才会设置 .NET 运行时,不需要生成时不会报错,需要生成而无法生成时才会报错。 原理 挖个坑,稍后填。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

    51420

    拥抱.NET Core,如何开发跨平台的应用并部署至Ubuntu运行

    优点 易移植 发布的内容较小 缺点 需要安装.NET Core运行时 Self-contained application(自宿主应用) 当当当,这种方式很酷,也是我最喜欢的一种发布方式。...使用发布命令 ? 这样就发布完成了。 ps:如果发布失败请先执行dotnet restore或使用Visual Studio进行生成。...在使用CLI或Visual Studio进行发布 CLI命令: dotnet restore dotnet publish –r [win10-x64 | ubuntu.16.04-x64] –c release...使用Hyper-V安装Ubuntu时最后一步会卡住很久,大家强制重启即可(最好等个几分钟在强制重启),当然也可以等,很久很久之后他会好的。 ?...拷贝发布内容 方式不定,我用的是虚拟光驱镜像。 ? ? 运行自宿主应用 设置执行程序的执行权限 ? 使用命令行执行 ? 是不是很酷,没有安装任何东西,即可直接运行。

    1.8K10

    dotnet core 发布只带必要的依赖文件

    在使用 dotnet core 发布独立项目的时候,会带上大量依赖的库,但是通过微软提供的工具可以去掉一些在代码没有用到的库。...如果不知道如何编辑 csproj 文件,有一个简单的方法就是在发布的时候加上参数 /p:TrimUnusedDependencies=true 就可以 dotnet publish --self-contained...true /p:TrimUnusedDependencies=true 建议是在 build 的时候也使用 /p:TrimUnusedDependencies=true 参数,这样就可以发现一些动态使用的类没有引用...实际我测试通过这个方法没有去掉多少dll不如使用 CoreRT 编译为 Native 文件 Reducing the size of self-contained .NET Core applications...Creating a Minimal ASP.NET Core Windows Container standard/trimming.md at release/2.0.0 · dotnet/standard

    23010

    dotnet core 发布只带必要的依赖文件

    在使用 dotnet core 发布独立项目的时候,会带上大量依赖的库,但是通过微软提供的工具可以去掉一些在代码没有用到的库。...如果不知道如何编辑 csproj 文件,有一个简单的方法就是在发布的时候加上参数 /p:TrimUnusedDependencies=true 就可以 dotnet publish --self-contained...true /p:TrimUnusedDependencies=true 建议是在 build 的时候也使用 /p:TrimUnusedDependencies=true 参数,这样就可以发现一些动态使用的类没有引用...实际我测试通过这个方法没有去掉多少dll不如使用 CoreRT 编译为 Native 文件 Reducing the size of self-contained .NET Core applications...欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

    1.5K40

    WPF 通过 ReadyToRun 提升性能

    通过 ReadyToRun 可以在程序集同时包含 IL 和本机代码,可以有效提升软件的启动速度 在 .NET Core 3.0 Preview 6 发布了 ReadyToRun 的功能,通过这个功能可以提升软件的启动性能...,在程序设置在发布的时候使用 ReadyToRun 的特性,将会编译出来 ReadyToRun(R2R)格式的程序集 在这个程序集里面同时包含了 IL 和本机代码,可以做到在启动的时间减少 JIT 编译的时间...150MB 变为 156MB 这个大小对于桌面端应用程序几乎是可以被忽略 我认为使用 ReadyToRun 是对桌面端应用程序的极大的提升,这个功能其实已经很古老了,但是一直都没有发布,下面让我告诉大家如何在项目上应用这个白科技提高软件性能...WPF 可以使用这个特性,理论上任何的 dotnet core 程序都可以 在添加了 true 之后可以进行发布,此时发布的时候需要带上确定的运行环境属性...-r win-x64 --self-contained 此时在发布的文件夹可以找到比原来多出的 .ni.pdb 文件,这就是本机代码的符号文件 关于项目文件的配置请看我的项目 下载之后可以使用本文方法进行编译

    1.1K10

    dotnet build

    考虑到这一点,dotnet build 的产品还未准备好转移到另一台计算机进行运行。 要创建可部署的应用程序版本,需要发布该应用程序(例如,使用 dotnet publish 命令)。...对于具有多个目标框架的项目(通过 TargetFrameworks 属性),在指定此选项时还需要定义 --framework。 --os 指定目标操作系统 (OS)。...如果将此选项与 .NET 6 SDK 结合使用,则还要使用 --self-contained 或 --no-self-contained。...--self-contained [true|false] .NET 运行时随应用程序一同发布,因此无需在目标计算机上安装运行时。 如果指定了运行时标识符,则默认值为 true。...示例 生成项目及其依赖项: .NET CLI复制 dotnet build 使用“发布”配置生成项目及其依赖项: .NET CLI复制 dotnet build --configuration Release

    2K20

    【翻译】.NET 5 Preview8发布

    我将分享两个示例,第一个演示了属性的模式,在将上下文对象与特定模式进行比较之前,他会检查是否为null(带有is). if (context is {IsReachable: true, Length:...这也意味着,当您将现有的.NET Core3.1代码重新定位到.NET 5.0时,可能会生成新的诊断(如果启用了可空性),如果发生这种情况,您可以感谢我们帮助您避免使用 null Regular expression...我们使用.NET Core 3.1制作了一个单文件应用程序版本。它将二进制文件打包到一个文件中以进行部署,然后将这些文件解压缩到一个临时目录中以加载并执行它们。...=true 您还可以使用项目文件配置单个文件发布。...dotnet发布生成的现成代码(将 PublishReadyToRun 设置为true时)是AOT的示例。当您发布准备运行的映像时,该构建会提前为您生成机器代码,而不是在运行时由JIT生成。

    81120

    如何创建更好的混合云平台

    公共云还为快速启动的应用程序提供一个有吸引力的开发和部署平台,特别是当用户的业务已经在云中时。...但是,如果对于应用程序团队来说,开发并部署到公共云看起来就像开发并部署到他们的内部部署私有云一样吗?...经过三年的运营,英特尔公司IT团队在新环境中运行了3500多个应用程序实例,并且正在优化2000多个企业应用程序的过程中,确定哪些应用程序应该迁移到新平台,这些应用程序应该保持原状,可以退役或更换。...此外,该公司也加入了云计算服务的市场竞争,他们直接提供在亚马逊网络服务上运行的VMware Cloud服务。...其他选项包括一个专门用于客户组织的托管集群,但运行在亚马逊网络服务或Google云平台和OpenShift Online上,这是Red Hat公司提供的云计算解决方案。

    1.6K70

    在 Azure App Service 上运行 .NET 6 预览版

    本地环境 为了在您的应用程序中使用.NET 6,您需要首先安装 .NET 6 SDK。对于下面的示例,我们将使用最新的.NET SDK 6 Preview2。...6,因为它不依赖目标系统上共享组件的存在,并且所有组件(包括核心库和运行时)都与应用程序一起使用,并且与其他应用程序隔离。...当您到达发布屏幕时,单击铅笔图标以编辑用于发布应用程序的 Deployment Mode。 5. 然后,选择“Deployment Mode”选项,并确保选择“Self-Contained”。 ?...保存新设置,然后在前面的屏幕上单击“发布”以发布到App Service并使用.NET 6启动您的应用程序。有关自包含部署的更多信息,请参见此处。...部署容器时,您会将应用程序及其依赖项打包到基于 Linux 或 Windows 的镜像中,以在App Service平台上运行。

    60650

    使用.NET简单实现一个Redis的高性能克隆版(七-完结)

    译者注 该原文是Ayende Rahien大佬业余自己在使用C# 和 .NET构建一个简单、高性能兼容Redis协议的数据库的经历。...到目前为止,在本系列中,我主要关注的是如何读取和处理数据。但我认为我们应该退一两步,看看我们现在的总体情况。我在分析器中运行了使用Pipelines和字符串的版本,试图了解我们的进展情况。...例如,在上一篇文章中,我使用的 ConcurrentDictionary 有很大的性能开销。现在还是这样吗?...按照Ayende大佬的意思是后面会尝试在linux上使用IO_Uring来实现,目前来看大佬还没有其它的更新,已经发布的博文已经全部翻译。...我也在大佬博文底部提出了其它的一些性能优化的小建议,建议来自我之前发布的文章,同样高性能的网络服务开发。有兴趣的可以查看下方链接。

    30320

    译 | .NET Core 3.0 Preview 6 已发布

    对于任何熟悉 WPF 的人,程序集名称应该非常熟悉。 在某些情况下,测试仍在在进行中,以便在 3.0 GA 之前发布。也就是说,所有这些代码的存在应使 WPF 社区能够充分参与跨 WPF 进行更改。...该应用程序作为 self-contained 发布,并且不使用程序集链接器(稍后将介绍)。...AOT 编译程序集在很长一段时间内一直作为一个概念使用 .NET,可追溯到 .NET 框架和 NGEN。NGEN 有一个关键缺点,即必须在客户端计算机上使用 NGEN 工具进行编译。...注意: 编译应用程序程序集时,生成的本机代码特定于平台和体系结构(这就是为什么在发布时必须指定有效的运行时标识符)。...要使用此工具,请在项目中设置 PublishTrimmed=true,并在项目中发布自包含(self-contained)的应用: dotnet publish -r -c Release

    98010

    混合云的好处以及未来的云应用

    实际上,在RightScale 公司发布的“2018年云计算现状”报告中,84%的企业表示已经使用多云战略。此外,这些组织的首要任务是优化其现有的云应用,以节省成本。...这些好处包括按需付费定价以及在与公共Azure相同的Azure环境中内部开发应用程序的能力。 亚马逊网络服务(AWS) 2006年,亚马逊网络服务(AWS)开始向企业提供IT基础设施服务作为网络服务。...2018年,亚马逊公司发布了AWS Outposts,它将AWS服务、基础设施和运营模式引入几乎任何数据中心、托管或内部部署设施。...最近,谷歌公司宣布推出Anthos,这是一种混合云管理产品,允许企业使用单一仪表板管理所有应用程序,无论他们是在私有数据中心、谷歌云、AWS还是Azure中。...只有在合适的合作伙伴的支持下,企业才能优化其云计算投资,并以高效、经济、及时的方式实现其目标。 (来源:企业网D1net)

    1.3K20

    NetBeauty2:让你的.NET项目输出目录更清爽

    在.NET项目开发中,随着项目复杂性的增加,依赖的dll文件也会逐渐增多。这往往导致输出目录混乱,不便于管理和部署。...而NetBeauty2开源项目正是为了解决这一问题而生,它能够帮助开发者在独立发布.NET项目时,将.NET运行时和依赖的dll文件移动到指定的目录,从而让输出目录更加干净、清爽。...NetBeauty2简介unsetunset NetBeauty2是一个开源的.NET依赖库整理工具,它的主要作用是在.NET项目独立发布时,对输出目录进行整理和优化。...如果你的应用程序已经发布,可以这样使用(站长没试过,这可以做为发布后补偿措施): Usage: nbeauty2 [--loglevel=(Error|Detail|Info)] [--srmode]...配置为.NET Core全局工具 dotnet tool install --global nulastudio.nbeauty 安装后在程序发布时会自动应用。 unsetunset4.

    18010

    .NET Core全面扫盲贴

    这是因为在当前版本中(1.0),.NET Core中的大部分核心代码都是从.NET Framework中继承重写的,包括Runtime和Libraries(如GC, JIT, 部分类型)。...吐槽:只能感谢微软《CLR via C#》不用白看呀,我之前看了得有小半年才看完 现在的.NET Core 1.0版本是一个很小的核心,APIs和工具也并不完整,但是随着.Net Core的不断完善...Get Started 以下内容演示在Windows10和CentOS 7.2下的命令行生成和发布demo 3.1 Win 10 3.1.1 安装.NET Core SDK和.NET Core Runtime...上new的应用此时也不能直接跨平台到Linux下运行,所以我们又得提到dotnet publish命令了 3.2.2 Self-contained applications 发布 (1) 修改project.json...相比较之前的.NET Framework傻瓜式部署,.NET Core的新奇真是让我眼前一亮。接下来,我也会将.NET Core和ASP.NET Core的学习记录下来,欢迎指正。

    1.7K70

    优化 ASP.NET Core Docker 镜像的大小

    在这容器化的世界里,我们已经很少直接通过文件发布来运行asp.net core程序了。现在大多数情况下,我们都会使用docker来运行程序。在使用docker之前,我们往往需要打包我们的应用程序。...那么有什么办法来缩小我们打出来的镜像吗?最小能缩小到多少呢?这篇文章就来介绍下如何缩小asp.net core 打包出来镜像的大小。 新建asp.net core 程序 ?...runtime-deps:5.0-alpine 最新的.net core程序支持自宿主及单文件发布。...如果采用以上发布形式,那么我们可以选择使用runtime-deps:5.0-alpine做为最终底包来打包我们的镜像。...一般生产我主要选择buster-slim这个镜像来打包。如果选择runtime-deps打包,打出来的包是最小的,虽然演示项目是可以运行的,但是本人没有在生产使用过,还请谨慎使用。

    2.4K20

    .NET Core全面扫盲贴

    这是因为在当前版本中(1.0),.NET Core中的大部分核心代码都是从.NET Framework中继承重写的,包括Runtime和Libraries(如GC, JIT, 部分类型)。...吐槽:只能感谢微软《CLR via C#》不用白看呀,我之前看了得有小半年才看完 现在的.NET Core 1.0版本是一个很小的核心,APIs和工具也并不完整,但是随着.Net Core的不断完善...Get Started 以下内容演示在Windows10和CentOS 7.2下的命令行生成和发布demo 3.1 Win 10 3.1.1 安装.NET Core SDK和.NET Core Runtime...上new的应用此时也不能直接跨平台到Linux下运行,所以我们又得提到dotnet publish命令了 3.2.2 Self-contained applications 发布 (1) 修改project.json...相比较之前的.NET Framework傻瓜式部署,.NET Core的新奇真是让我眼前一亮。接下来,我也会将.NET Core和ASP.NET Core的学习记录下来,欢迎指正。

    82710
    领券