Ctrl+F5 如何在 VS 中的 ASP.NET 个项目中工作?
How does Ctrl+F5 work in ASP.NET projects in VS?
我注意到当我在 VS2017 中使用 Launch Without Debugging(Ctrl+F5 而不是 F5)时,它总是有效。对于桌面应用程序,如果应用程序已经 运行ning,我已经习惯了它无法构建,因为它无法覆盖 .exe 文件。
但在我的 C# ASP.NET WebApi 项目中,当我按下 Ctrl+F5 时,我可以更改代码并再次按下 Ctrl+F5,它将构建并 运行。所以我假设 Visual Studio 设法以某种方式关闭或终止 Web 应用程序,因此它不会无法覆盖文件。
是这样吗?
ASP.NET 启用卷影复制,它会在执行程序集之前将程序集从 bin/ 目录复制到临时目录中。这样,影子程序集就会被文件系统锁定,留下 ASP.NET 监视 bin 目录的更改。
您可以在 MSDN 上阅读有关卷影复制程序集的更多信息:https://msdn.microsoft.com/en-us/library/ms404279.aspx
与Visual Studio无关,而是ASP.NET的性质。
ASP.NET 将 DLL 文件复制到 Windows
目录中的临时文件夹。它还会编译文件夹中可能包含的页面标记,并将生成的程序集也从该文件夹复制到临时文件夹。该文件夹中的 Web 应用程序是 运行.
例如,当您更改 ASPX 文件时,IIS 服务器会重新编译页面文件并替换 DLL。然后它获取更改。
更改 DLL 或 web.config
时,ASP.NET 重置应用程序池并重新加载所有程序集。
我注意到当我在 VS2017 中使用 Launch Without Debugging(Ctrl+F5 而不是 F5)时,它总是有效。对于桌面应用程序,如果应用程序已经 运行ning,我已经习惯了它无法构建,因为它无法覆盖 .exe 文件。
但在我的 C# ASP.NET WebApi 项目中,当我按下 Ctrl+F5 时,我可以更改代码并再次按下 Ctrl+F5,它将构建并 运行。所以我假设 Visual Studio 设法以某种方式关闭或终止 Web 应用程序,因此它不会无法覆盖文件。
是这样吗?
ASP.NET 启用卷影复制,它会在执行程序集之前将程序集从 bin/ 目录复制到临时目录中。这样,影子程序集就会被文件系统锁定,留下 ASP.NET 监视 bin 目录的更改。
您可以在 MSDN 上阅读有关卷影复制程序集的更多信息:https://msdn.microsoft.com/en-us/library/ms404279.aspx
与Visual Studio无关,而是ASP.NET的性质。
ASP.NET 将 DLL 文件复制到 Windows
目录中的临时文件夹。它还会编译文件夹中可能包含的页面标记,并将生成的程序集也从该文件夹复制到临时文件夹。该文件夹中的 Web 应用程序是 运行.
例如,当您更改 ASPX 文件时,IIS 服务器会重新编译页面文件并替换 DLL。然后它获取更改。
更改 DLL 或 web.config
时,ASP.NET 重置应用程序池并重新加载所有程序集。