141

私はビルド後のイベントにあまり精通していないので、プログラムの何が問題になっているのかについて少し混乱しています。Visual Studio 2010でコンパイルすると、次のようになります。

The command "xcopy C:\Users\Me\Path\Foo.bar\Library\dsoframer.ocx C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\Foo.bar\ApplicationFiles C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
xcopy C:\Users\Me\Path\url\ C:\Users\Me\Path\Foo.bar\bin\Debug\ /Y /E /D
rmdir /S /Q C:\Users\Me\Path\Foo.bar\bin\Debug\.gwt-tmp" exited with code 4.    

このエラーにもかかわらず、プログラム正常に実行されているように見えますが、この問題を無視したくないので、何も悪いことが起こらないことを願っています。不思議なことに、この行は単一のコマンド(最初のxcopy)として始まりましたが、プロジェクトをコンパイルし続けると(他の問題、主に参照を修正)、エラーメッセージがどんどん大きくなりました。何が起こっているのか考えてみませんか?

編集:失敗しているように見えるビルド後のイベントは次のとおりです-

xcopy $(ProjectDir)Library\dsoframer.ocx $(TargetDir) /Y /E /D
xcopy $(ProjectDir)ApplicationFiles $(TargetDir) /Y /E /D
xcopy $(SolutionDir)com.myUrl.gwt\www $(TargetDir) /Y /E /D
rmdir /S /Q $(TargetDir).gwt-tmp
4

16 に答える 16

189

Xcopyの終了コード4は、「初期化エラーが発生しました。メモリまたはディスクの空き容量が不足しているか、コマンドラインに無効なドライブ名または無効な構文を入力しました。」を意味します。

VisualStudioがxcopyに無効な引数を提供しているようです。を介してビルド後のイベントコマンドを確認してくださいProject > Right Click > Properties > Build Events > Post Build Event

$(ProjectDir)または同様のマクロ用語が展開されたときに結果のパスにスペースがある場合、それらは二重引用符で囲む必要があることに注意してください。例えば:

xcopy "$(ProjectDir)Library\dsoframer.ocx" "$(TargetDir)" /Y /E /D1
于 2011-04-11T19:40:43.630 に答える
38

ウォッチタブを「出力」に切り替えて、xcopyコマンドを探します。ここで、問題の解決に役立つメッセージ(実際のxcopy出力)が見つかることがあります。[出力]タブが表示されない場合は、[表示]-[出力]メニューを使用して表示します。

于 2011-04-11T19:54:11.963 に答える
32

受け入れられた回答に加えて、宛先フォルダーが読み取り専用の場合にもエラーが発生する可能性があります(TFSを使用する場合に一般的)

于 2013-05-16T08:23:43.013 に答える
22

ソースファイルが見つからない場合、xcopyはエラーコード4も返します。

于 2014-01-16T06:21:25.070 に答える
12

xcopyコマンドが読み取り専用ファイルを上書きしようとしたときに、「コード4で終了」エラーが発生しましたxcopyコマンドに/Rを追加することで、この問題を解決することができました。/ Rは、読み取り専用ファイルを上書きする必要があることを示します

古いコマンド:

XCOPY /E /Y "$(ProjectDir)source file" "destination"

新しいコマンド

XCOPY /E /Y /R "$(ProjectDir)source file" "destination"
于 2016-03-24T11:48:24.180 に答える
8

他の回答が説明しているように、終了コード4には多くの原因が考えられます。

結果のパス名が最大許容長を超えた場合に気づきました(ここのように)。

影響を受けるビルド後のイベントについて、xcopyをrobocopyに置き換えました。robocopyはパスをわずかに異なる方法で処理しているようで、xcopyが処理できなかったコピータスクを完了することができました。

于 2014-02-02T11:32:56.183 に答える
5

それは意味します:

初期化エラーが発生しました。十分なメモリまたはディスク容量がないか、コマンドラインに無効なドライブ名または無効な構文を入力しました。

つまり、基本的には何でもかまいません...コマンドプロンプトから一度に1つずつコマンドを実行して、どのコマンドのどの部分で問題が発生しているかを確認してください。

于 2011-04-11T19:40:36.053 に答える
3

私はメッセージと一緒にこれを手に入れました

ドライブの指定が無効です

ドライブ名を指定せずにネットワーク共有にコピーする場合、例:

xcopy . \\localhost

どこ

xcopy . \\localhost\share

期待されていた

于 2015-09-15T14:23:49.780 に答える
3

このエラーは、リポジトリがコピーされる空白がある場合に発生します。たとえば、私のプロジェクトは下の場所にコピーされ、 c://projects/My rest project そこに空白が表示されます。リポジトリパスを下に変更すると、機能するはずです。 c://projects/myrestproject

于 2020-02-13T08:57:33.630 に答える
3

これは、ターゲットフォルダが他のプロセスによって使用されている場合にも発生する可能性があります。ターゲットフォルダを使用している可能性のあるすべてのプログラムを閉じて、試してください。

リソースモニター(Windowsツール)を使用して、ターゲットフォルダーを使用するプロセスを確認できます。

これは私のために働いた!

于 2020-07-06T05:58:12.447 に答える
2

この問題に遭遇したので、コマンドラインからxcopyコマンドを実行すると、次のように表示されました。

File creation error - The requested operation cannot be performed on a file with
 a user-mapped section open.

それは実際には何かを保持しているVisualStudioでした。Visual Studioを再起動したところ、動作しました。

于 2017-09-13T20:38:17.330 に答える
1

私の場合、問題はビルドの順序が正しくないことが原因でした。あるプロジェクトには、ビルド後のイベントでファイルをbinフォルダーから別のフォルダーにコピーするxcopyコマンドがありました。しかし、依存関係が正しくないため、xcopyの進行中に新しいファイルがbinフォルダーに作成されていました。

VSで、ビルド後のイベントがあるプロジェクトを右クリックします。[依存関係の構築]>[プロジェクトの依存関係]に移動し、それが正しいことを確認します。プロジェクトのビルド順序(依存関係の次のタブ)も確認します。

于 2016-08-31T06:40:52.343 に答える
0

私も同じ問題を抱えていました。スラッシュがどちらの方向を指しているかを確認することもできます。私にとっては、スラッシュの代わりにバックスラッシュを使用するように機能しました。例

xcopy /s /y "C:\SFML\bin\*.dll" "$(OutDir)"

それ以外の:

xcopy /s /y "C:/SFML/bin/*.dll" "$(OutDir)"
于 2018-12-11T16:07:51.710 に答える
0

VS 2017で更新を行う前に、ビルド後のコマンドが正常に機能していました。SDKツールが更新され、新しいパスの下にあるため、アセンブリの署名に使用しているツールが見つかりませんでした。

これはこれから変わった....

call "%VS140COMNTOOLS%vsvars32"
    "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\sn.exe" -Ra "$(TargetPath)" "$(ProjectDir)Key.snk"

これに...

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\sn.exe" -Ra "$(TargetPath)" "$(ProjectDir)Key.snk"

非常に微妙ですが重大な変更であるため、このエラーが表示された場合は、更新後にパスを確認してください。

于 2019-01-15T18:31:22.830 に答える
0

注意すべきもう1つの点は、ダブルバックスラッシュです。これxcopy、入力パスパラメーターでそれらを許容しないためです(ただし、出力パスでそれらを許容します...)。

ここに画像の説明を入力してください

于 2019-01-16T18:55:49.783 に答える
0

他のソリューションがデバッグモードになっている場合は、最初にそれらをすべて停止し、その後VisualStudioを再起動します。それは私のために働いた。

于 2019-10-04T07:41:45.290 に答える