Closed asyura closed 4 years ago
用的NetCoreBeauty是什么版本?你的项目是独立部署的方式发布的吗?
用的NetCoreBeauty最新版本,我的项目不是独立部署的方式发布,直接编译的方式。我又试一下,报下面这个错误后,直接用命令行运行是没问题
Error: incomplete fxr info [/] found in deps.json: D:/dev/dotnet/DeepLogic.WebApi/bin/Debug/netcoreapp3.1/DeepLogic.WebApi.deps.json
Error: incomplete fxr info, skipping patch
不过安装到windows service运行就不行了,事件查看器中显示以下错误
Description: A .NET Core application failed.
Application: deeplogic.webapi.exe
Path: C:\Program Files (x86)\Jenkins\workspace\DeepLogic WebApi CI\6_out\webapi\deeplogic.webapi.exe
Message: Error:
An assembly specified in the application dependencies manifest (DeepLogic.WebApi.deps.json) was not found:
package: 'Autofac.Extensions.DependencyInjection', version: '5.0.1'
path: './Autofac.Extensions.DependencyInjection.dll'
看来在windows services下程序的根目录好像不对,所以找不到程序集了,不过在命令行直接运行没问题。另外不用NetCoreBeauty,在windows services下运行也是可以的。
目前的话这个工具只适用于独立部署模式发布的程序,因为只有独立部署才会产生成吨的文件,依赖框架发布或者直接编译的话是没有这么多文件的,如果的话可以把你编译出来的目录结构截图看下吗?看下多不多文件(这个工具的第一目标就是减少程序根目录的文件数),多的话也可以考虑兼容一下,但不一定能实现,毕竟独立部署和依赖框架部署它们俩的apphost结构不太一样
谢谢回复。项目直接编辑后目录是这样的: https://pasteboard.co/IK7pnOq.png 用了NetCoreBeauty后是这样: https://pasteboard.co/IK7pPqe.png 用了NetCoreBeauty直接运行是可以的,但在windows services下运行不了
谢谢回复。项目直接编辑后目录是这样的: https://pasteboard.co/IK7pnOq.png 用了NetCoreBeauty后是这样: https://pasteboard.co/IK7pPqe.png 用了NetCoreBeauty直接运行是可以的,但在windows services下运行不了
直接运行能跑,windows services不能跑是因为hostfxr的一个BUG(有兴趣的话可以看看这个项目的第一个issue,对了解netcore也有一定帮助),只有在工作目录和程序根目录一致的情况下才能运行,而独立部署时我会把一个打了补丁的hostfxr替换过来以修复这个BUG,但是非独立部署的话是使用的是官方原版的hostfxr,所以这个BUG会一直存在。你可以试试命令行cd到别的目录(非程序根目录),然后再用x:\xxx\yyy\program.exe的方式去运行,你会发现运行也是报错的。
好的,我再试试,多谢回复。
这几天都看了下依赖框架部署的不同,由于依赖框架部署生成时只记录程序运行所需的最低runtime版本,比如记录了2.1
版本,在客户机运行时有可能是2.1.100
、2.2.0
、3.0.0
,这是不确定的,而我们工具需要对一个确切版本的hostfxr进行补丁,否则运行起来是有BUG的,无法在根目录以外的目录运行程序,所以本工具将无法支持依赖框架部署。
用命令行运行时出这个错误,项目是.net core 3.1的 错误信息: