5

Visual Studio 2008 を使用して ASP.NET Web アプリケーションを作成しています。プロジェクトは、Visual Studio が提供する既定の空のプロジェクトからほとんど変更されていませんが、次の点が異なります。

  • プロパティ -> ビルド -> 出力で、「XML ドキュメント ファイル」にチェックを入れ、「bin\MyProject.XML」に設定します。
  • [プロパティ] -> [ビルド イベント] で、「ビルド後のイベント コマンド ライン:」がcopy /y "$(TargetDir)$(TargetName).XML" "C:\TEMP\"

初めてプロジェクトをビルドまたは再ビルドすると、ビルド プロセスが正常に完了します。ただし、その後いつでもビルドしようとすると、ビルド プロセスは次のメッセージで失敗します。

------ Build started: Project: MyProject, Configuration: Debug Any CPU ------
MyProject -> C:\Projects\MyProject\MyProject\bin\MyProject.dll
copy /y "C:\Projects\MyProject\MyProject\bin\MyProject.XML" "C:\TEMP\"
The system cannot find the file specified.
c:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3397,13): error MSB3073: The command "copy /y "C:\Projects\MyProject\MyProject\bin\MyProject.XML" "C:\TEMP\"" exited with code 1.
Done building project "MyProject.csproj" -- FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

コマンド ウィンドウでビルド後のコマンドを実行できるため、構文が正しいことは確かです。

C:\>copy /y "C:\Projects\MyProject\MyProject\bin\MyProject.XML" "C:\TEMP\"
        1 file(s) copied.

コマンドは手動で実行すると機能しますが、ビルド プロセスの一部である場合に失敗するのはなぜですか?

4

1 に答える 1

6

中間ビルドの出力パスとして指定されたディレクトリと同じディレクトリに XML ドキュメント ファイルが生成されるときに、Visual Studio によって使用される基になる msbuild タスクに問題があります。

これを修正するには、たとえば次のように別のディレクトリを指定する必要があります。

ここに画像の説明を入力

次のように、それに応じてビルド後のコピー コマンドを変更します。

copy /y "C:\Projects\MyProject\MyProject\docbin\Debug\MyProject.XML" "C:\TEMP\"
于 2011-12-09T14:21:59.023 に答える