代码之家  ›  专栏  ›  技术社区  ›  Abel

Visual Studio疯了:尝试编译时出现“目录名无效”错误

  •  10
  • Abel  · 技术社区  · 14 年前

    出于某种非常奇怪的原因,我的VisualStudio2008在尝试编译C#项目时,试图将可执行文件的输出写入与可执行文件同名的目录,至少看起来这就是错误消息的含义。在我的任何项目上运行Compile后,CSC.EXE报告以下编译器错误:

    无法写入输出文件 'D:\Projects\Examples\stringbuildervstring\obj\Release\stringbuildervstring.exe' --'目录名无效。'

    当我往里面看的时候 obj\Release obj\Debug

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

    任何解决这个问题的想法都是值得欢迎的。

    3 回复  |  直到 14 年前
        1
  •  13
  •   Community leo1    7 年前

    解决了的!谢谢你的意见,我同时找到了解决办法。原因很罕见,但也可能发生在其他人身上,所以我决定在这里回答我自己的问题:

    原因

    %TEMP% 位置,或无法访问的 %USERPROFILE% 路径。

    为了加快编译速度,我将这些路径移到了更快的SSD驱动器上。驱动器崩溃了,操作系统再也找不到它了(据报道) on ServerFault here )因此,移动的位置(互联网缓存、我的文档和临时文件)变得不可访问。

    visualstudio提到的错误具有误导性:它与文件名无关(虽然我仍在想为什么它要将可执行文件作为目录查询),但错误是关于%TEMP%位置不正确。

    解决方案

    %温度% 环境变量,(如果你忘了,这里是: 系统>高级>环境变量 ).

    注意:典型的和默认的TEMP设置是使用USERPROFILE环境变量作为默认值 %USERPROFILE%\AppData\Local\Temp . 这是有效的,但只有在注册表中 HKCU\Environment\TEMP 属于 REG_EXPAND_SZ 而不是 REG_SZ .

        2
  •  1
  •   Sukesh Chand    7 年前

    确保你有足够的可用空间在你的驱动器,我也遇到了同样的问题,得到解决后,分配更多的可用空间。

        3
  •  0
  •   JeeShen Lee    4 年前

    在添加文件(Database.mdf)之前,通过手动添加文件夹(App\u Data)来解决此问题

    当.sln注册一个文件夹(这就是为什么它会出现在visualstudio中)而该文件夹实际上不存在于磁盘上时,就会发生这种情况。

        4
  •  -1
  •   Abel    12 年前

    我还遇到了一个类似的错误,无法写入输出文件“………………………”-- '目录名无效。'

    我尝试删除文件夹,按照上面的建议更改环境变量(即%USERPROFILE%或%TEMP%),但似乎什么都不起作用。

    错误MSB6003:未能找到指定的任务可执行文件“cmd.exe” 快跑。找不到目录路径: C:\Users\Administrator\AppData\Local\Temp\2\“

    这句话使我找到了解决办法。

    %USERPROFILE% = C:\Users\Administrator\AppData\Local\Temp
    

    顺便说一句,我们只在所有云实例上注意到了这一点。和虚拟化有关吗。。我真的不知道

        5
  •  -1
  •   Omkar Rajale    4 年前

    把那个文件移到别的地方,然后试着运行它。它对我有用。