我有一个使用MyApp.Web
在本地运行的.NET Core 2.2 Web应用程序dotnet run
。
我想使用MyApp.Web.Tests
在项目dotnet test
中同时运行单元测试,而不必停止正在运行的Web应用程序。
但是,我收到一条错误消息:
C:\Program Files\dotnet\sdk\2.2.401\Sdks\Microsoft.NET.Sdk.Razor\build\netstandard2.0\Sdk.Razor.CurrentVersion.targets(510,5): warning MSB3026: Could not copy "obj\Debug\netcoreapp2.2\MyApp.Web.Views.dll" to "<projectdir>\bin\Debug\netcoreapp2.2\MyApp.Web.Views.dll". Beginning retry 1 in 1000ms. The process cannot access the file '<projectdir>\bin\Debug\netcoreapp2.2\MyApp.Web.Views.dll' because it is being used by another process.
.NET Core为什么要锁定已编译的视图?有什么办法可以防止这种情况,以便我可以运行测试?
到目前为止,我发现的唯一解决方案是运行NCrunch,它可以在完全独立的位置复制和构建项目。但这需要我运行Visual Studio,而我并不总是想要这样做(而是使用Rider)。
答案 0 :(得分:1)
将<RazorCompileOnBuild>false</RazorCompileOnBuild>
添加到Web项目.csproj
将防止其锁定.Views.dll
文件,并允许在运行时重建项目,而允许dotnet test
该应用程序正在运行。