Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# dotnet watch run命令中的对象路径不';行不通_C#_Asp.net Core_.net Core - Fatal编程技术网

C# dotnet watch run命令中的对象路径不';行不通

C# dotnet watch run命令中的对象路径不';行不通,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,要使用指定的绝对路径运行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 --proje

要使用指定的绝对路径运行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 watch help指定
-p
-project
参数:

Microsoft DotNet File Watcher 2.1.1-rtm-30846

用法:dotnet watch[选项][-]…]

选项:-?|-h |--帮助显示帮助信息
-p |--将项目投影到watch-q |--quiet抑制除警告和错误之外的所有输出-v |--verbose
显示详细输出--列表列出所有发现的 不启动监视程序的文件--版本显示 版本信息

环境变量:

当设置为“1”或“true”时,DOTNET\u使用\u轮询\u文件\u监视程序, dotnet watch将轮询文件系统的更改。这是必需的 对于某些文件系统,如网络共享,Docker已安装 卷和其他虚拟文件系统

DOTNET_WATCH DOTNET WATCH在所有子节点上将此变量设置为“1” 启动进程

备注:特殊选项“---”用于分隔 选项和将传递给 子dotnet进程。它的使用是可选的。什么时候特别选择 未使用“---”,dotnet watch将使用第一个无法识别的 参数作为传递到子级的所有参数的开头 dotnet进程

例如:dotnetwatch--verbose run

尽管“--verbose”是dotnet watch支持的选项,但是 of'--'表示应将'--verbose'视为 dotnet运行的参数

示例:dotnet watch运行dotnet watch测试


那怎么了?为什么project的绝对路径不适用于
dotnet watch run
,而适用于
dotnet run

我不是100%确定,但dotnet watch正在当前目录中查找文件更改。所以,如果使用绝对路径,它必须知道应该在哪里查找更改。当然,这样的实现是可能的,但我认为在实现
watch
命令时没有人考虑过这一点您可以通过在
watch
命令上指定
-p
(或更长的
--project
)选项,而不是在
run
命令上指定。在您的情况下,这将是:

dotnet watch -p C:\foo\bar\Project\Project.csproj run
文件中有一条说明:

您可以使用
dotnetwatch--project
指定要监视的项目。例如,从示例应用程序的根目录运行
dotnet watch--project WebApp
run也将运行并观看WebApp项目


说得好。但我认为这是一个bug,因为文档清楚地描述了我们可以指定一个我们想要观看的项目的路径。