这两天写了一个net core 程序,将mongodb数据库数据同步更新到mysql对应表中,代码测试了好几遍,都没有问题。功能代码都不难写,不过对于好久没有写代码的我来说,还是有点让我感觉很爽的,体验到了写代码的乐趣。原以为只要部署到应用电脑上就O了,可很多事情都是会有意向不到的情况发生。
当我把程序通过bat启动运行时,就发生了报错了,错误如下:
" An assembly specified in the application dependencies manifest (xxx
.deps.json) was not found:
package: 'BouncyCastle.NetCore', version: '1.8.5'
path: 'lib/netstandard2.0/BouncyCastle.Crypto.dll' "
咋一看以文缺少BouncyCastle.Crypto.dll,一看,文件夹中是有的,电脑上搜倒是搜不到'lib/netstandard2.0/BouncyCastle.Crypto.dll' 路径下的,这可咋回事啊。没事看看,有事百度,对于菜鸟的我,用的最多就是百度了,Google用的少,翻墙就更少了。搜了一圈,试了几下,还是不行。同事也把对应的绝对文件夹路径也构建,结果又报其他dll找不到。我想到我用VS发布操作失败,就直接用bin里面的文件包,这应该时问题的根源。
于是我又试了几次发布和换电脑编译,结果还是不行。发布没有一次不是失败的,所以我想,这肯定试问题的所在,于是搜索通过命令行进行publish,结果发布成功了,我带着满是期盼在应用电脑上运行,结果ok了。幸好ok了,因为明天就要演示程序,而解决了问题时,已经是凌晨近1点了。为了避免以后再发生部署环境运行环境导致的异常,还是要publish的好,不能直接用编译的程序包运行。
为了避免以后自己忘记,我把pulish的命令写下,命令为:
cd /d [程序工程根目录]
dotnet publish -c Release -r win-x64 -o ./publish --self-contained true