Visual Studio消失了:尝试编译时"目录名无效"错误

Abe*_*bel 11 c# compiler-errors csc visual-studio-2008

出于一些非常奇怪的原因,我的Visual Studio 2008在尝试编译C#项目时,尝试将可执行文件的输出写入与可执行文件同名的目录,至少看起来这就是错误消息所暗示的内容.在我的任何项目上运行Compile后,CSC.EXE报告以下编译器错误:

无法写入输出文件'D:\ Projects\Examples\StringBuilderVsString\_obj\Release\StringBuilderVsString.exe' - '目录名无效."

当我查看内部obj\Releaseobj\Debug所有中间资源时,如StringBuilderVsString.pdb正确地写在该目录中.目录中没有空格.从命令提示符运行csc.exe时也会发生此错误.

运行Process Monitor时,我只看到csc.exe访问的文件的SUCCESS,我没有看到任何查询或写入不存在的位置.

任何解决这个问题的想法都是受欢迎的.

Abe*_*bel 13

解决了!感谢您的投入,我同时找到了解决方案.原因很少,但可能会发生在其他人身上,所以我决定在这里回答我自己的问题:

原因

不正确或无法访问的%TEMP%位置或无法访问的%USERPROFILE%路径.

我已将这些路径移动到更快的SSD驱动器以加速编译.驱动器崩溃,操作系统不再找到它(如此处的ServerFault报告),因此,移动的位置(互联网缓存,我的文档和临时)已无法访问.

Visual Studio提到的错误具有误导性:它与文件名无关(虽然我仍然想知道它为什么要查询可执行文件作为目录),但错误是关于%TEMP%位置不好.

修复%USERPROFILE%%TEMP%环境变量,(如果你忘了,它在这里:系统>高级>环境变量).

注意:典型的默认TEMP设置是使用默认情况下的USERPROFILE环境变量%USERPROFILE%\AppData\Local\Temp.这是有效的,但只有在注册表中,键下HKCU\Environment\TEMP的类型REG_EXPAND_SZ而不是REG_SZ.