.NET Core 3.1 Web API引用类库修改后dotnet watch run不自动重载问题
解决dotnet watch在类库修改时自动重载Web API的问题
嘿,这个场景我太熟悉了!默认情况下dotnet watch只会盯着当前Web API项目的文件变化,对于引用的类库项目,它可不会主动去监听。不过咱们只需要简单配置一下,就能让它在类库代码修改时自动触发重载。下面给你几个实用的方案:
方案1:修改launchSettings.json配置
打开Web API项目根目录下的Properties/launchSettings.json,找到对应的调试profile,添加watchFiles节点,把你需要监听的类库路径加进去。比如:
"profiles": { "MyWebApi": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "watchFiles": [ "**/*.cs", // 监听当前Web API项目的所有cs文件 "../ClassLibraryA/**/*.cs", // 监听第一个类库项目的所有cs文件 "../ClassLibraryB/**/*.cs" // 监听第二个类库项目的所有cs文件 ] } }
路径用相对路径就行,对应你类库项目在解决方案中的位置。
方案2:在Web API的.csproj中配置监听
如果不想改动launchSettings,也可以直接在Web API项目的.csproj文件里添加监听规则:
<ItemGroup> <!-- 监听当前项目的代码文件 --> <Watch Include="**/*.cs" /> <!-- 逐个添加需要监听的类库路径 --> <Watch Include="../ClassLibraryA/**/*.cs" /> <Watch Include="../ClassLibraryB/**/*.cs" /> </ItemGroup>
这个配置和方案1的效果是一样的,只是把规则写在了项目文件里。
方案3:给类库项目添加监听配置(更灵活)
如果你的Web API是通过项目引用关联类库的,这个方案会更省心——不用在Web API里逐个写类库路径。只需要在每个类库项目的.csproj中添加以下配置:
<ItemGroup> <Watch Include="**/*.cs" /> </ItemGroup>
这样当你在Web API项目中执行dotnet watch run时,它会自动识别所有引用的类库项目的监听配置,只要类库的代码有修改,就会触发重新编译和Web API的重载。
注意事项
- 不管用哪个方案,修改配置后都需要重启
dotnet watch run,新的监听规则才会生效。 - 确保类库项目的修改确实会触发编译——如果类库没有被重新编译,Web API还是会使用旧的dll,重载也不会体现新的变更。
这样配置完之后,你修改类库代码保存时,dotnet watch就会自动检测到变化,重新编译类库并重启Web API,再也不用手动去保存Web API的文件啦!
内容的提问来源于stack exchange,提问作者apoiat
相关产品推荐
相关产品推荐

