По некоторой очень нечетной причине моя Visual Studio 2008, при попытке скомпилировать проект C#, пытается записать вывод исполняемого файла к каталогу с тем же именем как исполняемый файл, по крайней мере, кажется, что это - то, что подразумевает сообщение об ошибке. После рабочей Компиляции на любом из моих проектов CSC.EXE сообщает о следующей ошибке компилятора:
Не мог записать в выходной файл 'D:\Projects\Examples\StringBuilderVsString\obj\Release\StringBuilderVsString.exe' - 'Имя каталога, недопустимо'.
Когда я смотрю внутри obj\Release
или obj\Debug
все промежуточные ресурсы, как StringBuilderVsString.pdb правильно записаны в том каталоге. В каталоге нет никаких пробелов. Ошибка происходит также при выполнении csc.exe от командной строки.
При выполнении Монитора Процесса я только вижу УСПЕХ для файлов, к которым получает доступ csc.exe, и я не вижу запросов или записи в местоположения, которые делают не существуют.
Любые идеи заняться этим приветствуются.
Решено! Спасибо за вклад, я тем временем нашел решение. Причина редка, но может случиться с другими, поэтому я решил ответить на свой вопрос здесь:
Неверное или недоступное % TEMP%
местоположение или недоступное % USERPROFILE%
путь.
Я переместил эти пути на более быстрый SSD-диск, чтобы ускорить компиляцию. Привод сломался, и ОС его больше не нашла (как сообщается на ServerFault здесь ), и, следовательно, перемещенные места (интернет-кеши, мои документы и временные файлы) стали недоступными.
Ошибка, упомянутая Visual Studio, вводит в заблуждение: она не имеет ничего общего с именем файла (хотя мне все еще интересно, почему он запрашивал исполняемый файл как каталог), ошибка была связана с расположением% TEMP% быть плохим.
Исправьте переменные среды % USERPROFILE%
или % TEMP%
(если вы забыли, они находятся здесь: Система> Дополнительно> Переменные среды ).
Примечание. Типичная настройка TEMP по умолчанию - использовать переменную среды USERPROFILE, как в % USERPROFILE% \ AppData \ Local \ Temp
по умолчанию. Это работает, но только если в реестре ключ в HKCU \ Environment \ TEMP
имеет тип REG_EXPAND_SZ
, а не REG_SZ
.