12

特定のディレクトリに DLL を xcopy するビルド後のイベントがあるプロジェクトがあります。

xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)..\UdpLocationService\bin\Plugins\" /d /y
xcopy "$(TargetDir)$(TargetName).pdb" "$(SolutionDir)..\UdpLocationService\bin\Plugins\" /d /y

ただし、CruiseControl.NET をビルド サーバーとしてセットアップしましたが、この xcopy ビルド後のイベントが原因で、MSBuild がそのプロジェクトのビルドに失敗しています。

MSB3073: The command "xcopy "C:\Build\Services\Windows\VehicleServer\Plugins\Payload\bin\Debug\Payload.dll" "*Undefined*..\UdpLocationService\bin\Plugins\" /d /y xcopy "C:\Build\Services\Windows\VehicleServer\Plugins\Payload\bin\Debug\Payload.pdb" "*Undefined*..\UdpLocationService\bin\Plugins\" /d /y" exited with code 4. in Microsoft.Common.targets(3397, 13)

これを修正するための提案はありますか?

4

3 に答える 3

26

TeamCity で同じ問題に遭遇しました。

ここでの問題は、ビルド ファイルの $(SolutionDir) プロパティです。MsBuild への呼び出しでそれを定義していません (これが、出力にundefinedという単語が表示される理由です)。

次のように、プロパティ セットを使用して msbuild を呼び出します。

msbuild myproject.csproj /property:SolutionDir="solution directory"\

"solution directory" は、ソリューション ファイルを含むディレクトリです。末尾のスラッシュに注意してください。パスが正しく形成されていることを確認するために必要です。

于 2012-02-15T18:11:09.937 に答える
8

Microsoft.SqlServer.Compact nuget パッケージ (同様のビルド後のスクリプトが追加されます) の問題については、以下を追加して修正しました。

<SolutionDir Condition="'$(SolutionDir)'=='' or '$(SolutionDir)'=='*Undefined*'">..\</SolutionDir>

のすぐ上<PostBuildEvent>。プロジェクトのレイアウトに合わせて相対パスを調整する必要があります。

于 2013-08-09T17:53:00.587 に答える
4

次の手順を実行します:

  • プロジェクト ファイルをアンロードします (例: *.csproj)。
  • プロジェクト ファイルを開いて編集する
  • AfterBuild ターゲットを見つける
  • XCopy の 2 つの呼び出しを 2 つの異なる Exec タスクに分離します。
  • 変更を保存し、プロジェクト ファイルをリロードします
于 2010-07-01T20:01:48.027 に答える