在 Windows 环境与 Ubuntu 环境中执行 "dotnet lambda package" 的不同包
Different packages executing "dotnet lambda package" on Windows environment versus an Ubuntu environment
所以,我一直致力于在 AWS 的 EC2 实例中启动 Bamboo CI 服务器并 运行ning。一切都进展顺利;但是,我 运行 遇到了一个棘手的问题。 CI 部分工作正常,但与在我的基于 Ubuntu 的 Bamboo 服务器上执行 "dotnet lambda publish" 相比,通过在我的基于 Ubuntu 的 Bamboo 服务器上执行 "dotnet lambda publish" 开发的工件似乎创建了一个不兼容的包Windows 机器。当我部署由我的 Bamboo 服务器生成的包时,我只是收到以下错误:
{
"errorType": "LambdaException",
"errorMessage": "Unable to load assembly '<project-name>, Culture=neutral, PublicKeyToken=null'."
}
我查看了包中的内容,虽然文件中没有明显差异;文件大小有一些差异。在 Ubuntu 上生成的包大约为 14.8 MB,而在 Windows 上生成的包大约为 15.4 MB。
任何人都可以解释这些包过程之间的区别吗?为什么我在针对 Ubuntu 进行编译时可能会得到一个较小的包?为什么我的 Windows 包恰好可以工作,而 Ubuntu 包却抱怨找不到文件?
我曾假设 "dotnet lambda package" 命令会专门针对 Lambda 上下文构建工具,而不管操作系统环境如何。使用相同的 CLI 命令在不同的环境中创建不同且看似不兼容的构建似乎很奇怪。
编辑:经过进一步调查,我相信它与通过执行 "dotnet lambda package" cli 在 Bamboo CI 服务器上使用的压缩过程有关。当我将它本地带到我的 Windows 机器并尝试再次上传包时,它失败了。经过更多调查,我发现如果我在 Windows 上解压缩包,然后通过右键单击并发送到 -> 压缩(压缩)文件夹重新压缩,然后再次上传,完全相同文件内容将开始工作。也许这是 "dotnet lambda package" 方法期间 zip 执行的问题?
意识到我的编辑后,我决定与帮助创建 Amazon.Lambda.Tools 包的亚马逊人员取得联系。事实证明,如果您的 linux 机器上没有安装 "zip",它会自动假定您是 运行 一台 Windows 机器,它会选择压缩使用 "dotnet lambda package" 创建的最终包的不正确的可执行文件。当它使用不正确的可执行文件时,应用的 chmod 命令不会被保留。
简单修复,执行:apt install zip
这将确保您的 Ubuntu 框使用正确的 zip 可执行文件,并且生成的 zip 文件可以毫无问题地上传到 Lambda。
所以,我一直致力于在 AWS 的 EC2 实例中启动 Bamboo CI 服务器并 运行ning。一切都进展顺利;但是,我 运行 遇到了一个棘手的问题。 CI 部分工作正常,但与在我的基于 Ubuntu 的 Bamboo 服务器上执行 "dotnet lambda publish" 相比,通过在我的基于 Ubuntu 的 Bamboo 服务器上执行 "dotnet lambda publish" 开发的工件似乎创建了一个不兼容的包Windows 机器。当我部署由我的 Bamboo 服务器生成的包时,我只是收到以下错误:
{
"errorType": "LambdaException",
"errorMessage": "Unable to load assembly '<project-name>, Culture=neutral, PublicKeyToken=null'."
}
我查看了包中的内容,虽然文件中没有明显差异;文件大小有一些差异。在 Ubuntu 上生成的包大约为 14.8 MB,而在 Windows 上生成的包大约为 15.4 MB。
任何人都可以解释这些包过程之间的区别吗?为什么我在针对 Ubuntu 进行编译时可能会得到一个较小的包?为什么我的 Windows 包恰好可以工作,而 Ubuntu 包却抱怨找不到文件?
我曾假设 "dotnet lambda package" 命令会专门针对 Lambda 上下文构建工具,而不管操作系统环境如何。使用相同的 CLI 命令在不同的环境中创建不同且看似不兼容的构建似乎很奇怪。
编辑:经过进一步调查,我相信它与通过执行 "dotnet lambda package" cli 在 Bamboo CI 服务器上使用的压缩过程有关。当我将它本地带到我的 Windows 机器并尝试再次上传包时,它失败了。经过更多调查,我发现如果我在 Windows 上解压缩包,然后通过右键单击并发送到 -> 压缩(压缩)文件夹重新压缩,然后再次上传,完全相同文件内容将开始工作。也许这是 "dotnet lambda package" 方法期间 zip 执行的问题?
意识到我的编辑后,我决定与帮助创建 Amazon.Lambda.Tools 包的亚马逊人员取得联系。事实证明,如果您的 linux 机器上没有安装 "zip",它会自动假定您是 运行 一台 Windows 机器,它会选择压缩使用 "dotnet lambda package" 创建的最终包的不正确的可执行文件。当它使用不正确的可执行文件时,应用的 chmod 命令不会被保留。
简单修复,执行:apt install zip
这将确保您的 Ubuntu 框使用正确的 zip 可执行文件,并且生成的 zip 文件可以毫无问题地上传到 Lambda。