我正在重新安装Windows 10 Pro(10.0.18362),并试图为.NET Core 3.1 Web开发设置和配置Visual Studio 2019,但遇到了几个问题。
我创建了一个默认的React.js ASP.NET Core Web应用程序并运行了该项目。一切似乎正常,除了更新JavaScript代码后,浏览器在相当长的暂停后更新;事情似乎有些滞后。
从默认Web App(无更新)关闭Visual Studio 2019后,有几个进程似乎挂起,必须手动关闭:
我尝试过使用Visual Studio安装程序提供的Node.js安装Visual Studio 2019,除了手动安装Node.js V12.4和V13.6之外,结果也是一样的。
另一个问题:如果我使用npx create-react-app client-app --typescript
将项目从JavaScript更新为TypeScript,热更新完全停止工作。但是在更新JavaScript代码并刷新浏览器之后,似乎更新了,所以它似乎正在重新编译。我已经尝试在Firefox和Chrome中调试,结果都是一样的。
我非常犹豫是否继续使用此安装,因为这些进程出现了几个问题。如果这些进程意外挂起并且没有关闭,它们将继续使用旧版本的代码,并且在进程关闭之前,所做的任何事情都不会更新,导致完全疯狂。
我是否需要执行特定的安装过程作为解决方案?或者我可能缺少NuGet包或加载项?由于这是操作系统的全新安装,是否需要安装Windows功能?或者其他可能导致此问题的配置/权限更改?
在此安装之前,只有在Visual Studio 2017中创建的项目似乎可以按预期工作。但我需要在.NET Core 3.0中开发此网站,并且看起来只有Visual Studio 2019支持。
更新
经过一番折腾,看起来是Node导致了问题。如果我手动关闭Node进程,那么Visual Studio最终将关闭-但它会让其他进程(如VSCompiler和Console)运行。即使我以管理员身份运行Visual Studio,也会发生这种情况。
我应该在Visual Studio之前安装Node,还是反之亦然?是否需要在Visual Studio或Node中执行一些设置才能使其正常工作?
更新2
在没有找到任何修复后,我尝试了完整的Windows重新安装,包括磁盘格式,然后只安装了Visual Studio和Node.js。
我在做这件事的时候发现了一件有趣的事情:我最初只安装了Visual Studio,并选择了“Web Development”和“NodeJS Development”。但是当我尝试运行一个新的.NET Core Web应用程序时,我收到一个错误,说Node.js没有安装-即使我能够在Visual Studio下的MsBuilds
文件夹中找到node.exe
。
我完全卸载了Visual Studio和所有其他组件,安装了Node.js,然后安装了Visual Studio,但问题仍然存在。每当我尝试使用SPA模板运行任何类型的JavaScript时,Node.js进程都不会关闭。如果我杀死Node.js进程,则Visual Studio最终会关闭,但它使必须手动关闭的Console Window Host
和VBCSCompiler
仍在运行。
我还尝试创建一个新的.NET Core Web应用程序,除了这次选择Angular模板,它工作得更好:热重新加载工作,它似乎运行得更快。但进程 * 仍然 * 不会关闭。唯一的区别是杀死Node.js进程不会让Visual Studio关闭。
更新3
也不知道这是否有帮助,但我尝试将node.exe
属性设置为“以管理员身份运行此程序”,以查看是否碰巧是权限问题。这产生了相同的结果。我注意到将弹出两个窗口,然而:首先是一个空白窗口,然后是实际的Angular服务器窗口。
我不确定这是否相关,但是当我再次尝试运行Angular应用程序时,它看起来像是Angular指向了另一个(随机)端口,而不是在项目的调试设置中设置的端口。
我注意到的一件事是,通常的服务器消息不会显示在输出窗口中。它曾经显示node.js消息,如“服务器正在运行”和其他编译器消息,但现在它只显示.NET输出。
更新4
我卸载了Visual Studio和Node.js,然后确保从AppData
和User/Local
目录中清除了所有剩余的Visual Studio和node_modules
文件夹,然后进行了磁盘清理。最后,我重新安装了Visual Studio-确保以Admin身份运行安装程序-并重新安装了Node.js。
我以管理员身份运行Visual Studio并创建了一个新的Angular应用程序。现在,Angular应用程序按预期工作,HMR工作,似乎运行得很顺利 * 除了 * 进程仍然挂起。主要区别是杀死Microsoft Visual Studio 2019
进程会杀死所有内容,而在此之前,它会让VBSCCompiler
,Node.js
和控制台运行。
当创建React应用程序时,加载正常。但是,同样,HMR不工作,并且还使进程运行。关闭主Visual Studio进程似乎也可以清理这些进程。
5条答案
按热度按时间bgtovc5b1#
在Visual Studio 2019中,转到“工具”,“选项”,“调试”,“常规”,底部有一个复选框,用于在调试停止时自动关闭控制台。在新版本的VS上,默认情况下未选中该复选框,如果您查看ASP.NET Core项目属性,您会看到它是一个控制台项目。因此,如果没有选中该复选框,控制台不会自动关闭。
问题是它是一个隐藏的控制台,所以你看不到它来手动关闭它。如果你选中自动关闭控制台的复选框,那么每当你停止调试器时,控制台和node.js都会停止运行。同样在选项中,你可能也想看看Node.js工具区域。它有一个复选框,当进程异常退出时等待输入。如果控制台是隐藏的,你没有办法做输入,这样也可以保持进程打开。
另一个选择是,如果您不想更改任何调试选项,是转到项目属性〉调试并将IIS Express配置文件的启动设置更改为项目而不是IIS Express。这实际上会使控制台/命令提示符可见,并且当您完成调试时,您可以Ctrl-C停止调试器,或者当你点击停止时,控制台会给予你一条消息:按任意键关闭这个窗口…
ghhkc1vu2#
我在React SPA遇到了同样的问题,这对我很有效:
播放按钮旁边的下拉列表:
脚本调试-〉禁用
ijxebb2r3#
有可能在Visual Studio中运行
pre
和post
构建任务。我会在项目设置中查找它们。我使用VSCode。所以,如果你遵循下面的解释,你将能够解决这个问题。1.在项目根文件夹中创建一个
.bat
文件(例如kill-node.bat
),内容如下:1.添加执行
.bat
文件的pre-build-task
1.添加执行
.bat
文件的post-build-task
1.完成了!现在每次你开始调试/重新调试你的应用程序时,
.bat
文件都会杀死所有的节点僵尸示例。你停止dubug的时刻也是如此。VSCode指南:
1.执行上述算法的步骤1。
1.打开
.vscode
文件夹中的文件tasks.json
,并在其任务的顶部添加新任务:1.现在修改
build
任务代码(在预构建时激活我们的kill-node
任务):1.打开
launch.json
文件并插入新字符串:1.就是这样,现在你再也不用担心
node-zombie
示例占用你的内存了。muk1a3rh4#
这应该在ASP.NET Core 5.0中得到修复,如果可能的话,请尝试升级。
ldioqlga5#
恐怕我没有一个修复,但如果任何人想要一个快速的方法来杀死所有错误的节点进程,并加快速度,他们可以运行:
taskkill /IM "node.exe" /F
在VS运行时,我没有遇到任何问题。