.NET Core锁定文件

won*_*rld 32 .net-core asp.net-core

我有一个ASP.NET核心应用程序.我通过运行命令来运行应用程序

dotnet run
Run Code Online (Sandbox Code Playgroud)

当我构建这个ASP.NET核心应用程序时,我在五分之一的情况下看到以下错误.

C:... \错误CS2012:无法打开'C:...\bin\Debug \netcoreapp1.0\AAA.Web.dll'进行写入 - '进程无法访问文件'C:...\bin\Debug \netcoreapp1.0\AAA.Web.dll'因为它正被另一个进程使用.

除了上述问题,我还看到我在CSHTML文件中没有进行任何更新.我必须停止dotnet run命令,再次构建应用程序然后运行dotnet run命令.

我该如何解决这些问题?

在此输入图像描述

csa*_*uve 16

在IIS中运行aspnetcore应用程序时,这也可能会有所帮助。

将以下内容添加到您的csproj中:

  <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Command="echo &quot;App Offline&quot; /a &gt; &quot;$(ProjectDir)app_offline.htm&quot;" />
  </Target>

  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="del &quot;$(ProjectDir)app_offline.htm&quot;" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

  • 更新 - 问题仍然存在,错误的结论:-( (3认同)

Kur*_*ula 14

如果它在本地并且应用程序在IIS上运行,则在日期时间之前在Windows任务栏中,应该有一个IIS Express Option。选择IIS Express,然后选择退出。尝试再次运行应用程序。

退出IIS Express


jam*_*art 14

当尝试使用/taskkill /f /pid <number in the error>它杀死进程时,它告诉我该进程甚至不存在。

我只需要.NET Core Host在任务管理器中找到并在那里结束。

当我编辑测试项目时偶尔会发生这种情况Core 3.0- 不使用 IIS,它只是一个类库和一个解决方案中的测试项目。

在此处输入图片说明

  • 我有类似的问题。输出提到了锁定测试项目的 pid,我不得不终止该进程。它正在运行“dotnet.exe”(即使在 Visual Studio 和我桌面上的所有内容都关闭之后)。 (2认同)

mLa*_*Lar 9

就我而言,即使停止监视模式后,由于dotnet watch run命令,我仍然遇到相同的问题。
Visual Studio报告了此错误消息:该文件被锁定:“ .NET core Host(pid)”
,用pid终止了进程,从而解决了该问题。

  • `taskkill / f / pid 12345` (8认同)

小智 8

打开任务管理器,找到.NET Core Host,右击,结束任务。 在此处输入图片说明


Jus*_*eno 6

dotnet watch命令可以跟踪文件系统更改和编辑,并将它们编译到正在运行的进程中.这是通过首先在project.json文件Microsoft.DotNet.Watcher.Toolstools部分中安装包来完成的.请在此处查看其用法文档.

安装完成后,您可以使用该命令运行应用程序dotnet watch run并进行编辑,同时避免手动重新启动应用程序.


小智 6

我最终回收了应用程序池来解锁我的 dll。 在此处输入图片说明


Ron*_*n C 5

这在我身上发生过很多次。至少在我的情况下,问题是我的应用程序正在运行。因此,当编译器尝试更新 dll 时,它无法更新,因为 dll 已被锁定并被正在运行的应用程序使用。一旦我关闭应用程序并再次进行编译,它就可以正常工作。

  • 我认为我们不应该关闭应用程序,然后每次进行更改时都重新编译。**dotnet run** 以某种方式锁定了不应该锁定的 dll。 (4认同)