2009-02-26 16 views
1

私はポストビルドビルドイベントでの.sln上のMSBuildを呼びたいMSBuildのVisual Studioのコマンドライン上

何かしようとしています:私はちょうど1行であることを行うことができます

xcopy "$(TargetDir)$(TargetName)*" "C:\TEST\" /Y. 

を?? ?基本的に私は次のようなものを持っています:

msbuild Solution.sln xcopy "$(TargetDir)$(TargetName)" "C:\TEST\" 

どうすればいいですか?

答えて

0

作成中のプロジェクトでポストビルドイベントを追加して、そのコピーを行います。

0

いいえ、ポストビルドイベントを追加することは、ビルド中のプロジェクトファイルの一部です。コマンドラインの最後にコピーを追加する方法はわかりません。

コピーを行うビルド中のプロジェクトにポストビルドイベントを追加できます。

0

あなたのポストビルドイベントは、namedconfigurationビルドの一部であるため、project/configビルドの一部として実行されます。

少なくとも、これはコマンドラインからMSBuildを実行した経験です。

多分私はあなたの質問を誤解しています。プロジェクトを編集する方がいいでしょう私見...というよりも、あなたの特定の実装にお答えしようとしている

3

を - あなたは、我々はそれを解決得るための方法を考え出すことができるやろうとしているかを説明場合は、おそらく

ファイルを直接作成し、AfterBuildターゲットに追加します。ここでは、リリースビルドにアセンブリDLL、PDBおよびXMLファイルをコピーする例を示します

<Target Name="AfterBuild"> 
    <CallTarget Targets="CopyFrameworkToTools" 
       Condition="'$(Configuration)' == 'Release'"/> 
</Target> 
<Target Name="CopyFrameworkToTools"> 
    <CreateItem Include="$(OutputPath)$(AssemblyName).*"> 
    <Output ItemName="ReleaseFiles" TaskParameter="Include" /> 
    </CreateItem> 
    <Copy SourceFiles="@(ReleaseFiles)" DestinationFolder="..\Tools\" /> 
</Target> 

コピー・タスクを使用して1行までのことを取り除くことができ、私はMSBuildのに統合することはあなたに多くの柔軟性を与えることを示したいと思います制御します。

1

このようにすることはできません。コマンド行から実行するタスクを指定する方法はありません。あなたが行うことができるのは、ターゲットを指定することだけです。

次のいずれかを実行できます

  • はあなたが必要とするタスクに小さなのMSBuildプロジェクトファイルを作成します。欠点:ソリューション内の他のプロジェクトの出力を参照することはできませんので、ファイルを明示的に指定する必要があります。
  • (Visual Studioを使用して)プロジェクトファイルに投稿イベントを追加します。欠点:プロジェクトを修正する必要がありますが、これは必ずしも可能ではありません。 (いいえ、コマンド行からそのイベントを挿入することはできません)また、このイベントは通常のビルドの一部としてのみ実行されます。
  • プロジェクトファイルに別のターゲットを追加します。ポストビルドイベントと同じ欠点。 teビルドイベントとの違いは、そのターゲットをmsbuildに明示的に指定でき、そのタスクだけを実行することです。欠点:ポストビルドイベントと同じです。
+0

"通常のビルド"これはどういう意味ですか?プロジェクトのmsbuild(VSまたはcmd行を介して)を呼び出すと、AfterBuildターゲットが実行されます。このアプローチはあなたに良いコントロールを与えます。 – si618

+0

私はAfteruildターゲットについては言及していませんでしたが、ポストビルドイベントについては話していませんでした。二つは異なっている。 –

関連する問題