更新后dotnet watch publish命令失效,被当作dotnet run执行的问题
解决dotnet watch publish触发dotnet run报错的问题
问题原因
你的项目OutputType是Library(类库),dotnet watch的默认逻辑会优先尝试启动可执行项目,当检测到项目为类库时,即便指定了publish命令,也会 fallback 执行dotnet run,最终导致报错。
解决方案
若项目是类库(无需运行):
类库项目本身不需要通过dotnet run启动,要监听文件变化自动发布,可换用msbuild命令触发:dotnet watch msbuild /t:Publish /p:Project=Client/ /p:Configuration=Release或者在项目的csproj文件中添加自定义监听目标:
<Target Name="WatchPublish"> <Watch Include="**/*.cs" /> <MSBuild Targets="Publish" Properties="Configuration=Release" /> </Target>之后执行:
dotnet watch run --project Client/ WatchPublish若项目应为可执行类型(如Web/控制台):
打开Client项目的csproj文件,修改OutputType为Exe,并确认TargetFramework是可运行的版本(如net6.0、net7.0等):<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> </PropertyGroup>修改完成后再执行原命令,即可正常触发watch publish。
检查命令路径准确性:
确保--project参数指向正确的项目文件,若Client文件夹下存在多个csproj,需指定具体文件名:dotnet watch publish --project Client/Client.csproj --configuration Release
内容的提问来源于stack exchange,提问作者Toxic
相关产品推荐
相关产品推荐

