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


132

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

ここに画像の説明を入力してください

プロジェクト1のファイル/Views/ModuleHome/Index.cshtmlをプロジェクト2のフォルダーにコピーしたいのですが、ビルド後のイベントを介して、目的のプロジェクトにファイルをコピーするにはどうすればよいですか?ありがとう

回答:


309
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-複数のファイルをコピーする場合、ディレクトリとして扱います。
  • / Q-コピーされるファイルを表示しません。
  • / S-空でない限り、サブディレクトリをコピーします。
  • / E-空のサブディレクトリをコピーします。
  • / Y既存のファイルの上書きを要求しません。
  • / R-読み取り専用ファイルを上書きします。

2
この行をポストビルドに追加したところ、次のエラーが発生しました "エラー1コマンド" xcopy "C:\ Users \ tcompton \ Downloads \ MEFMVCPOC \ ModuleA \ Views \ ModuleAHome \ Index.cshtml" "C:\ Users \ tcompton \ Downloads \ MEFMVCPOC \ MEFMVCPOC \ Views \ ModuleAHome ""はコード2で終了しました。 " これは何を意味するのでしょうか?
BoundForGlory

出力ウィンドウを見てくださいCtrl+W+O。いViews\ModuleAHome、目標場所にフォルダが存在しますか?実行されている正確なコマンドを出力ウィンドウで確認し、xcopyコマンドのドキュメントを読んで、使用可能なさまざまなスイッチを理解しますxcopy /?
Darin Dimitrov

1
「Views \ ModuleAHome」フォルダは存在しますが、ターゲットプロジェクトの一部ではありません。つまり、VSに表示するには、「すべてのファイルを表示」をクリックする必要があります。
BoundForGlory

1
宛先フォルダーが宛先プロジェクトの一部ではないという事実がxcopyに影響を与えるとは思いません。このコマンドは、ファイルシステムを直接操作します。このフォルダーを宛先プロジェクトの一部として表示することに関する限り、このタスクの自動化はより困難な場合があります。
Darin Dimitrov

1
わかりました... xcopy "$(ProjectDir)Views \ ModuleAHome \ Index.cshtml" "$(SolutionDir)MEFMVCPOC \ Views \ ModuleAHome \" / Y / I ....この記事は、入力したsocial.msdnに役立ちました。 microsoft.com/Forums/uk/csharpgeneral/thread/...
BoundForGlory

20
xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt

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

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

このコマンドを使用して、ソリューション内のあるプロジェクトから別のプロジェクトにファイルをコピーし、.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.

ありがとうございました。/ exclude:your-source-pathとに引用符を追加すると機能しyour-destination-pathます。それらの引用がなければ、それはまったく機能しません。
AechoLiu 2013年

@AechoLiuファイルパスに空白スペースがある場合、引用符は常に必要です"My File.txt"
フェリペロメロ

14

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

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

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

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

/ I –宛先がディレクトリであると仮定します(ただしで終わる必要があります)

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


8

必要なファイルのソースから宛先にBatch実行Xcopyされる呼び出しファイル

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

7

こんな風に使っています。

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)を持っています

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

ここに画像の説明を入力してください


1
@HarshilDoshi Project→Project Property→Build Events→PostBuildEvent
Polluks

3

このコマンドは私にとって魅力のように機能します:

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

これを再帰的にコピーごとdllexeからファイルMySolutionPath\librariesへのbin\debugbin\release

あなたはここでより多くの情報を見つけることができます


2

以前の返信と同様に、私も提案していxcopyます。ただし、ハルゲイルエンゲンの回答を/excludeパラメーターで追加したいと思います。引用符が機能しないため、長いまたはスペースを含むパス名を使用できないパラメーターのバグがあるようです。パス名は、 "DOCUME〜1"に変換された "Documents"を含む "DOS"形式である必要があります(このソースによると)。

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

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

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


2

プラットフォーム(x64、x86など)と構成(デバッグまたはリリース)を考慮する場合は、次のようになります。

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.