dotnet watch run 命令中的绝对路径不起作用
Posted
技术标签:
【中文标题】dotnet watch run 命令中的绝对路径不起作用【英文标题】:Absolute path in dotnet watch run command doesn't work 【发布时间】:2019-01-18 13:59:25 【问题描述】:要使用指定的绝对路径运行 dotnet core 应用程序,我们需要运行以下命令:
dotnet run -p C:\foo\bar\Project\Project.csproj
但它似乎与dotnet watch run
不一样:
watch : Could not find a MSBuild project file in 'C:\directory\where\we\execute\command'. Specify which project to use with the --project option.
使用-project
而不是-p
运行相同的命令并没有帮助...
Dotnet 手表帮助指定了
-p
或-project
参数:Microsoft DotNet 文件观察器 2.1.1-rtm-30846
用法:dotnet watch [选项] [[--] ...]
选项:-?|-h|--help 显示帮助信息 -p|--project 要监视的项目 -q|--quiet 禁止除警告和错误之外的所有输出 -v|--verbose 显示详细输出 --list 列出所有发现 不启动观察者的文件 --version 显示 版本信息
环境变量:
DOTNET_USE_POLLING_FILE_WATCHER 当设置为“1”或“真”时, dotnet-watch 将轮询文件系统的更改。这是必需的 对于一些文件系统,比如网络共享,Docker挂载 卷和其他虚拟文件系统。
DOTNET_WATCH dotnet-watch 在所有子节点上将此变量设置为“1” 进程启动。
备注:特殊选项“--”用于分隔结尾 选项和将传递给 子 dotnet 进程。它的使用是可选的。当特殊选项 '--' 不使用,dotnet-watch 将使用第一个无法识别的 参数作为传递给孩子的所有参数的开始 dotnet 进程。
例如:dotnet watch -- --verbose 运行
即使 '--verbose' 是 dotnet-watch 支持的选项,使用 of '--' 表示应将 '--verbose' 视为 dotnet-run 的参数。
示例:dotnet watch 运行 dotnet watch 测试
那怎么了?为什么项目的绝对路径不适用于 dotnet watch run
而适用于 dotnet run
?
【问题讨论】:
【参考方案1】:您可以通过在watch
命令而不是run
命令上指定-p
(或更长的--project
)选项来解决此问题。在你的情况下,那将是:
dotnet watch -p C:\foo\bar\Project\Project.csproj run
docs 中有一条注释涵盖了这一点:
您可以使用
dotnet watch --project <PROJECT>
指定要观看的项目。例如,从示例应用的根目录运行dotnet watch --project WebApp run
也将运行并观察 WebApp 项目。
【讨论】:
【参考方案2】:我不能 100% 确定,但 dotnet watch 正在当前目录中查找文件更改。因此,如果您使用绝对路径,它必须知道它应该在哪里查找更改。当然,这样的实现是可能的,但我只是认为在实现watch
命令时没有人考虑过它
【讨论】:
好点。我认为这是一个错误,因为文档清楚地描述了我们可以指定一个我们想要观看的项目的路径。【参考方案3】:在我的情况下,它只是一个小错误,您必须在执行 dotnet 命令之前进入项目目录,例如:
cd yourAppName dotnet 监视运行 它会运行
【讨论】:
以上是关于dotnet watch run 命令中的绝对路径不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Dotnet Core 3.1:如何将 AddJsonFile 与文件的绝对路径一起使用?
.NET Core的“dotnet restore”“dotnet build”和“dotnet run”命令都是用来干什么的?
从绝对路径运行 cmd 无法识别 manage-bde 命令