11

非常に奇妙な理由で、私の Visual Studio 2008 は、C# プロジェクトをコンパイルしようとすると、実行可能ファイルの出力を実行可能ファイルと同じ名前のディレクトリに書き込もうとします。少なくとも、それがエラー メッセージが意味することのようです。私のプロジェクトのいずれかで Compile を実行した後、CSC.EXE は次のコンパイラ エラーを報告します。

出力ファイル 'D:\Projects\Examples\StringBuilderVsString\obj\Release\StringBuilderVsString.exe' に書き込めませんでした -- 'ディレクトリ名が無効です。'

内部obj\Releaseまたはobj\Debugすべての中間リソースを見ると、StringBuilderVsString.pdb などはそのディレクトリに正しく書き込まれています。ディレクトリにスペースはありません。このエラーは、コマンド プロンプトから csc.exe を実行したときにも発生します。

Process Monitor を実行すると、csc.exe によってアクセスされたファイルに対して SUCCESS のみが表示され、存在しない場所へのクエリや書き込みは表示されません。

これに取り組むためのアイデアは大歓迎です。

4

5 に答える 5

13

解決しました!入力していただきありがとうございます。その間に解決策を見つけました。原因はまれですが、他の人にも起こる可能性があるため、ここで自分の質問に答えることにしました。

原因

正しくない、またはアクセスできない%TEMP%場所、またはアクセスできない%USERPROFILE%パス。

コンパイルを高速化するために、これらのパスをより高速な SSD ドライブに移動しました。ドライブがクラッシュし、OS がそれを見つけられなくなり (ここで ServerFaultについて報告されているように)、その結果、移動された場所 (インターネット キャッシュ、ドキュメント、および一時ファイル) にアクセスできなくなりました。

Visual Studio で言及されているエラーは誤解を招くものです。ファイルの名前とは何の関係もありません (実行可能ファイルをディレクトリとしてクエリしていた理由をまだ疑問に思っています)。エラーは %TEMP% の場所が悪いことに関するものでした。

解決

%USERPROFILE%または環境変数を修正し%TEMP%ます (忘れた場合は、ここにあります: System > Advanced > Environment Variables )。

注: 一般的かつデフォルトの TEMP 設定では、デフォルトのように USERPROFILE 環境変数を使用します%USERPROFILE%\AppData\Local\Temp。これは機能しますが、レジストリで、下のキーHKCU\Environment\TEMPのタイプがではREG_EXPAND_SZなくである場合に限りますREG_SZ

于 2010-08-03T17:46:07.133 に答える
-1

私も同様のエラーが出ていました 出力ファイルに書き込めませんでした '................................' -- 'ディレクトリ名が無効です。'

上記のように環境変数 (%USERPROFILE% または %TEMP%) を変更してフォルダーを削除しようとしましたが、何も機能していないようでした。VS 2008 の出力ペイン/ウィンドウの出力をもう一度見たところ、次の行が見つかりました。

"c:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3397,13): エラー MSB6003: 指定されたタスク実行可能ファイル "cmd.exe" を実行できませんでした。ディレクトリ パスが見つかりませんでした: C:\Users\Administrator\AppData\Local\Temp\2\"

この行は私を解決策に導きました。「C:\Users\Administrator\AppData\Local\Temp」フォルダーに存在しない 2 つのフォルダーを作成しました。

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

ちなみに、これはすべての Cloud インスタンスでのみ確認できました。仮想化と何か関係がありますか?..本当にわからない

于 2011-08-26T20:28:49.940 に答える