13

ファイルのコピー作業を行うだけのVisualStudio(VSTS 2008を使用)プロジェクトを作成したいのですが、詳細については、このプロジェクトにいくつかのファイルを追加し、このプロジェクトのコピーファイル(このプロジェクトに含まれる)を目的の場所に追加します。プロジェクトをビルドします。

VSTSでこれを行う方法はありますか?

ところで:projファイルを使用するとそのようなタスクを実行できると聞きましたが、初心者向けの簡単なサンプルの学習は見つかりませんでした。:-)

よろしくお願いします、ジョージ

4

5 に答える 5

13

Visual Studio でビルド後のステップを追加できます。

  • プロジェクトのプロパティを開きます (これは C# プロジェクトで機能します。VB.NET にも当てはまると思います)。
  • [ビルド イベント] タブを選択します。
  • そこで、ビルド後のイベント コマンドを追加できます。たとえば、

    copy $(ProjectDir)\bin\* SOME_OTHER_FOLDER\*

$(ProjectDir) はマクロです。コマンドを編集するときに、さらにいくつかの利用可能なマクロが表示されます。

次に、対応するプロジェクト ファイル (XYZ.csproj または XYZ.vbproj) を見ると、ファイルの下部に次のようなプロパティ グループが追加されていることがわかります。

  <PropertyGroup>
      <PostBuildEvent>copy $(ProjectDir)\bin\* SOME_OTHER_FOLDER\*</PostBuildEvent>
  </PropertyGroup>

これは、MSBuild ファイルを直接編集するときに行う方法です。ビルドしてファイルをコピーするために Visual Studio を起動する必要はありません。プロジェクト ファイルを msbuild.exe に渡すだけでかまいません。

于 2009-05-04T13:40:20.130 に答える
4

前述のように、VisualStudio。xxprojファイルは実際にはMSBuildファイルです。したがって、MSBuildで許可されていることは何でも実行できます。私はそれらを使用して、ビルドプロセスをかなりカスタマイズしました。あなたの場合、あなたが探しているのはコピータスクです。AfterBuildターゲットに追加できます。

于 2009-05-04T13:55:21.217 に答える
0

この質問に対する他の回答は、VisualStudioではなくMSBuildを直接使用しているか、カスタムビルドステップまたはビルドイベントを追加できる既存のプロジェクトがあると想定する傾向があります(ビルドイベントタイプのソリューションではエラーが発生しやすいことがわかりました。コピーが必要な場合は、必ずファイルをコピーしてください)。

コピーのみを行うVisualStudioプロジェクトが必要な場合は、Makefileプロジェクトを備えたストックVisualStudioを使用してこれを行うことができます。

少し間違った名前のMakefileプロジェクトは、コマンドラインから実行できるすべてのことを実行できます。明らかに、これは、ファイルのみをコピーするMakefileプロジェクトを作成できることを意味します。Makefileプロジェクトのプロパティ構成プロパティ⇒NMakeセクションには、ビルド、再ビルド、およびクリーンアクションのフィールドがありますこれらには、単純な古いバッチファイルコマンドを入力できます。ビルドのたびに、VisualStudioは適切なフィールドから一時バッチファイルを作成し、cmdを使用して実行します。警告64ビットマシンで32ビットのcmdインタープリターを取得するため、魔法のsysnativeを使用する必要があります64ビットWindowsコマンドまたはDLLにアクセスする場合はディレクトリ(これがどこかに文書化されているかどうかわからないため、常にそうであるとは限りません-バッチスクリプトは、cmdの変更に対するビット数に対して堅牢である必要があります。

どのcmdまたはOS(32ビットまたは64ビット)がコードを実行するかを事前に知らなくても、64ビットシステムファイルを必要とするバッチコードの例:

if /i "%programfiles%"=="%programfiles(x86)%" if /i not "%programfiles%"=="%programw6432%" (
    REM 32 bit cmd on 64-bit computer
    REM Use the 'sysnative' fake directory to get to 64-bit system32 files
) else (
    if /i not "%programfiles%"=="%programfiles(x86)%" if /i "%programfiles%"=="%programw6432%" (
        REM 64 bit cmd on 64-bit computer
        REM Use the 'system32' directory to get to 64-bit system32 files
    ) else (
        echo "Cannot do 64-bit on 32-bit computer"
        copy foobar
    )
)

(上記の「copyfoobar」行は失敗し、ビルドが失敗します。)

VisualStudio(およびMSBuild)は常にMakefileプロジェクトを実行することに注意してください-出力ファイルのタイムスタンプをチェックせず、代わりにそのジョブを他のビルドツール(nmake、cmake、make、ant、maven、等。)。この場合、単純なコピーコマンドがあり、コピーを実行するかどうかをチェックするプログラムがないため、コピーはすべてのビルドで発生します。

VisualStudioが常にmakefileプロジェクトを実行しているということは、 F5キーを押してプロジェクトをデバッグするたびに、VisualStudioは、プロジェクトが終了したことを通知するダイアログボックス(指示がない場合)の不適切な表現で煩わしいことを意味します。日付の、そしてあなたがそれを再び構築しなければならないこと。VisualStudioにダイアログを表示しないように指示すると、実行可能ファイルを実行する前に、確認せずにコピーを実行します。

于 2012-10-11T16:40:50.267 に答える
0

Visual Studio 2010では、カスタムビルドツールを使用します

たとえば、このルールは「faq.txt」を出力ディレクトリにコピーします。

<ItemGroup>
  <CustomBuild Include="faq.txt">
    <Message>Copying readme...</Message>
    <Command>copy %(Identity) $(OutDir)%(Identity)</Command>
    <Outputs>$(OutDir)%(Identity)</Outputs>
  </CustomBuild>
</ItemGroup>
于 2010-10-28T19:56:52.733 に答える
0

C#/VB.NETプロジェクトファイルはMSBuildスクリプトです。MSBuildは必要なことは何でもできます...

于 2009-05-04T13:33:23.160 に答える