C# 不同的包执行;dotnet lambda包;Windows环境与Ubuntu环境

C# 不同的包执行;dotnet lambda包;Windows环境与Ubuntu环境,c#,ubuntu,aws-lambda,bamboo,aws-cli,C#,Ubuntu,Aws Lambda,Bamboo,Aws Cli,所以,我一直致力于在AWS的EC2实例中安装并运行Bambol CI服务器。一切进展顺利;然而,我遇到了一个可怕的问题。CI部分工作正常,但与在Windows机器上执行“dotnet lambda publish”相比,通过在基于Ubuntu的Bamboo服务器上执行“dotnet lambda publish”开发的工件似乎创建了一个不兼容的包。当我部署由我的Bambole服务器生成的包时,我只得到以下错误: { "errorType": "LambdaException", "err

所以,我一直致力于在AWS的EC2实例中安装并运行Bambol CI服务器。一切进展顺利;然而,我遇到了一个可怕的问题。CI部分工作正常,但与在Windows机器上执行“dotnet lambda publish”相比,通过在基于Ubuntu的Bamboo服务器上执行“dotnet lambda publish”开发的工件似乎创建了一个不兼容的包。当我部署由我的Bambole服务器生成的包时,我只得到以下错误:

{
  "errorType": "LambdaException",
  "errorMessage": "Unable to load assembly '<project-name>, Culture=neutral, PublicKeyToken=null'."
}
{
“errorType”:“LambdaException”,
errorMessage:“无法加载程序集,区域性=中性,PublicKeyToken=空。”
}
我已经查看了包的内容,尽管文件中没有明显的差异;文件大小有些不同。Ubuntu上生成的包大约为14.8 MB,而Windows上生成的包大约为15.4 MB

有人能解释一下这些包过程之间的区别吗?为什么我在编译Ubuntu时会得到一个更小的包?为什么我的Windows软件包碰巧可以工作,而Ubuntu软件包却抱怨找不到文件

我假设“dotnet lambda package”命令将专门为lambda上下文生成工具,而不管操作系统环境如何。在不同的环境中使用相同的CLI命令创建不同的、看起来不兼容的构建似乎很奇怪



编辑:进一步调查后,我认为这与通过执行“dotnet lambda package”cli在Bamboo CI服务器上使用的压缩过程有关。当我将它本地带到我的Windows计算机并尝试再次上载包时,它失败了。经过进一步的调查,我发现如果我在Windows上解压包,然后通过右键单击并转到send to->compressed(zipped)文件夹重新压缩包,然后再次上传,完全相同的文件内容将开始工作。也许这是“dotnet lambda包”方法中的zip执行问题?

了解我的编辑后,我决定与帮助创建Amazon.lambda.Tools包的亚马逊员工联系。事实证明,如果您的linux机器上没有安装“zip”,它将自动假定您正在运行Windows机器,并且它将选择不正确的可执行文件来压缩使用“dotnet lambda package”创建的最终包。当它使用不正确的可执行文件时,应用的chmod命令不会继续执行

简单修复,执行:apt安装zip

这将确保您的Ubuntu框使用正确的zip可执行文件,并且生成的zip文件可以毫无问题地上传到Lambda


说真的,这需要放在AWS文档中的某个地方~不过对吧!?很高兴我几个小时的痛苦帮别人节省了一些时间!