https://github.com/dotnet/cli/issues/7596
比如新建一个net core 1.1 mvc 项目,成功编译运行,然后正常发布成功。
发布目录为:E:\master\dotnet\WebApplication1\WebApplication1\bin\Release\PublishOutput
然后以下面两种方式运行
1: E:\> dotnet E:\master\dotnet\WebApplication1\WebApplication1\bin\Release\PublishOutput\WebApplication1.dll
2: E:\master\dotnet\WebApplication1\WebApplication1\bin\Release\PublishOutput\> dotnet WebApplication1.dll
第一个错误,直接错误为
“Error: The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'E:\appsettings.json'.”
env.ContentRootPath 等各种路径输出都是 ‘E:\’,尽管可以用某种方式把 env.ContentRootPath 这些路径手动修改正确,但是治标不治本,还会有新的路径错误,比如连 View 视图的路径都会错误
第二个正常
表现为:只要不在发布目录内运行,路径都会不对(路径输出为 dotnet 命令当下执行的目录),以各种可能的关键字搜索也一直没搜到相关的解决方案
解决思路:
1:从代码层面解决
2:从系统层面解决(Windows、Linux)
3:从 dotnet cli 层面解决
很好奇,你为什么这么来
我的方式错误了吗?
你们是怎么发布的?
@wuball:
dotnet restore
dotnet publish -o ${WORKSPACE}
/target/
-c Release
dockerfile文件
FROM docker.17usoft.com
/base/dotnet
COPY ${WORKSPACE}
/target/
/usr/local/app/
${APPNAME}
WORKDIR
/usr/local/app/
${APPNAME}
USER root
@wuball: 还有,2.0出来了,直接上2.0吧,我们好几个项目都上2.0了
@追疯真的人: 能上2.0当然好,但是我们这里用了ABP框架,依赖的1.1,框架上更新2.0应该问题比较多。
你这个是启用了docker 支持吗?对docker没怎么接触过,还不怎么能理解到你的思路。
@wuball: 不用docker的话,其实思路还是一样的,都是进入运行的目录,然后执行dotnet XXX.dll,你的第一种不要试了,在服务器上,用的都是第二种
@追疯真的人: 以我的认知范围,第二种在 supervisor 中不知道怎么配置
@wuball: 求分享。
@幻天芒:
supervisor 配置的命令
command=/bin/bash -c "cd /home/wwwroot/www.automan.com && dotnet automan.dll"
@wuball: 额...我一般用docker。其实你这个,也就是先进入目录,然后再直接执行。
这个怕是很难解决。要么你全部绝对路径。否则就到发布目录下执行。对于命令行,有一个work dir的概念。