.NET Core锁定文件

问题描述 投票:19回答:7

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

dotnet run

当我构建这个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命令。

我该如何解决这些问题?

enter image description here

asp.net-core .net-core
7个回答
9
投票

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

exit IIS Express


9
投票

在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>

6
投票

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

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


3
投票

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


3
投票

在我的情况下,即使在停止监视模式后,由于dotnet watch run命令,我也遇到了同样的问题。 Visual Studio报告此错误消息:文件被锁定:“.NET核心主机(pid)” 用pid杀死进程修复了这个问题。


3
投票

我最终回收了应用程序池以解锁我的dll。 enter image description here


-1
投票

比重新启动计算机更好的解决方法是关闭VS,打开任务管理器并杀死任何VBCSCompiler.exe实例

这对我有用

© www.soinside.com 2019 - 2024. All rights reserved.