我在使用Visual Studio(2017)时遇到问题,有时它无法识别更改或突然恢复为文件的旧版本,尤其是在更新Startup.cs
等资源或其他编译资源时。
曾经有几次运行正常,并且突然间发生了爆炸,在搜索代码后,我发现已更新的文件之一已经恢复到以前的版本。我只处理本地文件,不使用Git等...
我尝试清理整个解决方案,该解决方案有时可以解决该问题,所以也许部分是缓存问题?
有时,即使清洁了解决方案后,有时也会突然出现编译器错误,而修复该问题的唯一方法是关闭VS,删除所有obj
和bin
文件夹,重新启动然后重新构建。
我注意到的一件事是,有时VBSCompiler.exe
会挂起,即使在关闭VS之后也必须手动将其杀死。我还注意到,在多个监视器上使用“固定”选项卡或多个窗口会使此问题分配得更糟,更不用说在打开VS时出现间歇性错误了。
这使我认为某些服务(可能是IIS?)正在锁定文件,但是VS会启动新服务并打开文件的副本,即使确保未挂起VBSCompiler
,因为先前的服务仍然具有文件锁定,所以它不会覆盖文件,但是不会生成错误,这使我认为该文件是最新的,直到两个进程都关闭为止。解锁并再次打开文件后,它就是旧版本。
我认为这是最后一个事件所支持的,我从VS的解决方案中删除了一个Project,保存了该解决方案,清理了该解决方案,关闭了VS,检查是否有上述服务正在运行并删除了Project磁盘上的文件。我清空了回收站,但是在启动VS之前没有让它完全完成,并且收到错误消息,文件%SugZuy/ClientApp
被锁定并且无法删除,重启后,该项目已从解决方案中删除,当我关闭时VS,然后选择“再试一次”就可以继续。
我尝试禁用备份文件,跟踪,在构建之前始终清理整个解决方案,以及我在网上找到的有关IIS和VSBCompiler问题的一些建议,但仍然没有运气。最后一点,这全部是在全新安装的VS(2017社区)和Windows 10 Pro上全新安装的,以及从新的解决方案和项目(使用.Net Core Angular模板)开始的尝试,以解决此问题。
答案 0 :(得分:0)
我想我终于弄清楚了怎么回事, 也许其他人可以提供更好的解决方案,因为我不推荐这种黑客行为 。
我与VS 2017一起在开发机上安装了NodeJS,我以为VS将使用外部NodeJS从$(VSInstallDir)\Web\External
中删除了整个Tools->Options->Projects and Solutions->Web Package Management
条目。
然后,我注意到有一个node.exe
和另外2个Node.exe
进程一起运行,当我从任务管理器中打开文件位置时,请确保它使用的是NodeJS的VS外部工具版本以及NodeJS。
我认为这导致了一些冲突,并且基本上使VS的某些部分混乱,因此,当编译器挂起某些东西时,VS认为它关闭了正确的进程并启动了NodeJS的新实例,而另一个正在运行的JS仍具有该文件锁定。因此,当所有进程最终关闭时,使用NodeJS第二个实例进行的任何更改基本上都将被忽略。
我试图在Visual Studio中找到对NodeJS的所有引用,并确保路径在Tools->Options...
中的顺序正确,并搜索修补程序,但没有成功,这是我能够“隐藏” VS的外部工具(甚至在重新启动后)是将Node.exe
重命名为Node.exe.hide
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Web \ External
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Web \ External \ x86
我确信有更好的方法来解决此问题,但我找不到它。