web-dev-qa-db-ja.com

ビルド後イベントを使用して、あるプロジェクトから別のプロジェクトにファイルをコピーします... VS2010

3つのプロジェクトを含むソリューションがあります。あるプロジェクトから別のプロジェクトにビューをコピーする必要があります。作成したDLLを、ビルド後のイベントを介して次のようにコピーできます。

enter image description here

したがって、プロジェクト1のファイル「/Views/ModuleHome/Index.cshtml」をプロジェクト2のフォルダーにコピーします。ビルド後イベントを介してファイルを目的のプロジェクトにコピーする方法を教えてください。ありがとう

122
BoundForGlory
xcopy "$(ProjectDir)Views\Home\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\Home"

フォルダー全体をコピーする場合:

xcopy /E /Y "$(ProjectDir)Views" "$(SolutionDir)MEFMVCPOC\Views"

更新:ここに作業バージョンがあります

xcopy "$(ProjectDir)Views\ModuleAHome\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\ModuleAHome\" /Y /I

以下は、xcopyで一般的に使用されるいくつかのスイッチです。

/I - treat as a directory if copying multiple files
/Q - Do not display the files being copied.
/S - Copy subdirectories unless empty.
/E - Copy empty subdirectories.
/Y - Do not Prompt for overwrite of existing files.
/R - Overwrite read only files.
285
Darin Dimitrov
xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt

ソースパスと宛先パスの引用符に注意してください。ただし、exludelist txtファイルへのパスには含まれません。

ExcludedFilesList.txtの内容は次のとおりです。cs \

このコマンドを使用して、ソリューション内の1つのプロジェクトから別のプロジェクトにファイルをコピーし、.csファイルを除外しています。

/D Copy only files that are modified in sourcepath
/y Suppresses prompting to confirm you want to overwrite an existing destination file.
/s Copies directories and subdirectories except empty ones.
/r Overwrites read-only files.
20
Hallgeir Engen

xcopy "$(TargetDir)* $(TargetExt)" "$(SolutionDir)\ Scripts\MigrationScripts\Library \"/F/R/Y/I

/ F –完全なソースおよびターゲットファイル名を表示します

/ R –これは読み取り専用ファイルを上書きします

/ Y –既存のファイルを上書きするプロンプトを抑制します

/ I –宛先がディレクトリであると想定します(ただし、末尾はでなければなりません)

ちょっとしたコツ-ターゲットでは、ターゲットがファイルではなくディレクトリであることをxcopyに伝えるために、文字\で終わる必要があります!

13
Namrata Jain

私はこのように使用します。

xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 
xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 


/F : Copy source is File   
/Y : Overwrite and don't ask me

これの使用に注意してください。 $(TargetDir)にはすでに「\」「D:\ MyProject\bin \」= $(TargetDir)があります

コマンドエディターでマクロを見つけることができます

enter image description here

7
Super-Mantis

Batchファイルを呼び出します。このファイルは、必要なファイルのソースからデスティネーションに対してXcopyを実行します

call "$(SolutionDir)scripts\copyifnewer.bat"
7
swapneel

前の返信と同様に、xcopyも提案しています。ただし、/excludeパラメーターを使用してHallgeir Engenの回答に追加したいと思います。引用符が機能しないため、長いパス名やスペースを含むパス名での動作を妨げるパラメーターのバグがあるようです。パス名は「DOS」形式である必要があり、「Documents」は「DOCUME〜1」に変換されます( this source による)。

したがって、\ excludeパラメーターを使用する場合は、回避策 here があります。

cd $(SolutionDir)
xcopy "source-relative-to-path-above" "destination-relative-to-path-above
/exclude:exclude-file-relative-path

ソースと宛先のパスは引用符で囲むことができます(スペースが含まれている場合)、ただし、not除外ファイルへのパスです。

2
kim

platform(x64、x86など)およびconfiguration(DebugまたはRelease)を考慮する場合、次のようになります。

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 
2
Flot2011

このコマンドは私にとって魅力的です:

for /r "$(SolutionDir)libraries" %%f in (*.dll, *.exe) do @xcopy "%%f" "$(TargetDir)"

ItrecursivelyすべてのdllおよびexeファイルをMySolutionPath\librariesからbin\debugまたはbin\releaseにコピーします。

詳細は here で見つけることができます

0
Bizhan