dotnet watch $(SolutionDir) 是 *Undefined*

dotnet watch $(SolutionDir) is *Undefined*

我正在尝试使用 dotnet watch,但是我的项目引用了 nuget 包,它使用 $(SolutionDir) 在预构建事件中复制一些文件。这有点道理,因为 dotnet watch 在项目级别上是 运行,所以 $(SolutionDir) 不存在。有没有办法 运行 dotnet watch 整个解决方案?

从 dotnet-watch 2.0.0-preview2 开始,无法 运行 dotnet watch 解决方案文件。但是,您可以为将监视多个项目的监视程序构建自定义 'project'。有关如何执行此操作的完整示例,请参阅 https://github.com/aspnet/DotNetTools/tree/rel/2.0.0-preview2/samples/dotnet-watch/WatchMultipleProjects

我创建了一个批处理脚本watch.bat

call SET ASPNETCORE_ENVIRONMENT=Development
call SET SolutionDir=%~dp0\..\..\
call dotnet watch run

package.json 中添加了脚本:

 "scripts": { "dotnetwatch": "watch.bat" }

现在我可以从 CLI 中像这样 运行:

npm run dotnetwatch

或来自 visual studio 的 launchsettings.json 配置文件:

"dotnet watch": {
      "executablePath": "watch",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }

这不是一个理想的解决方案,但至少对我来说已经足够好了。