首页 新闻 会员 周边 捐助

dotnet 命令行运行 netcore1.1 的报路径错误,纠缠了一个星期了

0
悬赏园豆:100 [已解决问题] 解决于 2017-09-11 10:47

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 层面解决

问题补充:

已通过 Linux 层面解决

wuball的主页 wuball | 初学一级 | 园豆:20
提问于:2017-09-08 10:03
< >
分享
最佳答案
1

很好奇,你为什么这么来

收获园豆:78
bookc | 菜鸟二级 |园豆:284 | 2017-09-08 11:25

我的方式错误了吗?

你们是怎么发布的?

wuball | 园豆:20 (初学一级) | 2017-09-08 11:26

@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
dotnet ${bootname}.dll
bookc | 园豆:284 (菜鸟二级) | 2017-09-08 11:30

@wuball: 还有,2.0出来了,直接上2.0吧,我们好几个项目都上2.0了

bookc | 园豆:284 (菜鸟二级) | 2017-09-08 11:31

@追疯真的人: 能上2.0当然好,但是我们这里用了ABP框架,依赖的1.1,框架上更新2.0应该问题比较多。

你这个是启用了docker 支持吗?对docker没怎么接触过,还不怎么能理解到你的思路。

wuball | 园豆:20 (初学一级) | 2017-09-08 11:33

@wuball: 不用docker的话,其实思路还是一样的,都是进入运行的目录,然后执行dotnet XXX.dll,你的第一种不要试了,在服务器上,用的都是第二种

bookc | 园豆:284 (菜鸟二级) | 2017-09-08 11:35

@追疯真的人: 以我的认知范围,第二种在 supervisor 中不知道怎么配置

wuball | 园豆:20 (初学一级) | 2017-09-08 11:37

@wuball: 求分享。

幻天芒 | 园豆:37207 (高人七级) | 2017-09-11 10:59

@幻天芒: 

supervisor 配置的命令

command=/bin/bash -c "cd /home/wwwroot/www.automan.com && dotnet automan.dll"
wuball | 园豆:20 (初学一级) | 2017-09-11 11:04

@wuball: 额...我一般用docker。其实你这个,也就是先进入目录,然后再直接执行。

幻天芒 | 园豆:37207 (高人七级) | 2017-09-11 11:34
其他回答(1)
0

这个怕是很难解决。要么你全部绝对路径。否则就到发布目录下执行。对于命令行,有一个work dir的概念。

收获园豆:22
幻天芒 | 园豆:37207 (高人七级) | 2017-09-08 12:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册