পোস্ট বিল্ড ইভেন্ট ... VS2010 ব্যবহার করে একটি প্রকল্প থেকে অন্য প্রকল্পে ফাইল (গুলি) অনুলিপি করুন


132

এটিতে 3 টি প্রকল্পের সাথে আমার একটি সমাধান রয়েছে। আমার এক ভিউটি অন্য প্রকল্পে অনুলিপি করা দরকার। আমি পোস্ট বিল্ড ইভেন্টের মাধ্যমে তৈরি ডিএলএল অনুলিপি করতে সক্ষম হয়েছি:

এখানে চিত্র বর্ণনা লিখুন

সুতরাং আমি প্রকল্পের একটি / / ভিউস / মডুলহোম / ইন্ডেক্স.ক্সটিএমটিএল ফাইলটি প্রজেক্টের একটি ফোল্ডারে অনুলিপি করতে চাই post ধন্যবাদ

উত্তর:


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

এবং আপনি যদি পুরো ফোল্ডারগুলি অনুলিপি করতে চান:

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

আপডেট: এখানে কাজের সংস্করণ version

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

এখানে কিছু সাধারণ ব্যবহৃত স্যুইচ রয়েছে xcopy:

  • / I - একাধিক ফাইল অনুলিপি করা হলে ডিরেক্টরি হিসাবে বিবেচনা করুন।
  • / কিউ - অনুলিপি করা ফাইলগুলি প্রদর্শন করবেন না।
  • / এস - খালি না হলে সাব-ডিরেক্টরিগুলি অনুলিপি করুন।
  • / ই - খালি সাব ডিরেক্টরি ডিরেক্টরি কপি করুন।
  • / Y - বিদ্যমান ফাইলগুলি ওভাররাইট করার জন্য অনুরোধ করবেন না।
  • / আর - কেবল পঠনযোগ্য ফাইলগুলিকে ওভাররাইট করুন।

2
আমি এই পোস্টটি আমার পোস্ট বিল্ডে যুক্ত করেছি এবং আমি এই ত্রুটিটি পেয়েছি "ত্রুটি 1 কমান্ড" xcopy "C: \ ব্যবহারকারীদের \ tcompton \ ডাউনলোডগুলি \ MEFMVCPOC \ ModuleA \ ভিউগুলি \ Moduleahome \ Index.cshtml" "সি: \ ব্যবহারকারীদের \ tcompton \ ডাউনলোডগুলি \ এমইএফএমভিসিপিওসি \ এমইএফএমভিসিপিওসি \ ভিউস \ মডিউলএহোম "" কোড 2 সহ প্রস্থানিত "" এটার মানে কি?
বাউন্ডফোর্ডগ্লোরি

আউটপুট জানালায় দেখুন: Ctrl+W+OViews\ModuleAHomeফোল্ডারটি কি লক্ষ্য স্থানে বিদ্যমান? সঠিক কমান্ড জন্য আউটপুট জানালায় লুক মৃত্যুদন্ড কার্যকর করা হচ্ছে এবং তারপর বিভিন্ন সুইচ প্রাপ্তিসাধ্য বুঝতে xcopy কমান্ড ডকুমেন্টেশন পড়ুন: xcopy /?
দারিন দিমিত্রভ

1
'ভিউজ \ মডিউলএহোম' ফোল্ডারটি বিদ্যমান তবে এটি লক্ষ্য প্রকল্পের অংশ নয় মানে ভিএস-এ প্রদর্শিত হওয়ার জন্য আপনাকে 'সমস্ত ফাইল দেখান' ক্লিক করতে হবে meaning
বাউন্ডফোর্ডগ্লোরি

1
আমি মনে করি না যে গন্তব্য ফোল্ডারটি গন্তব্য প্রকল্পের অংশ নয়, এটি এক্সকপিতে কোনও পার্থক্য করে। এই কমান্ডটি সরাসরি ফাইল সিস্টেমের সাথে কাজ করে। গন্তব্য প্রকল্পের অংশ হিসাবে এই ফোল্ডারটিকে উপস্থিত করা যতটা উদ্বিগ্ন, এই কাজটি স্বয়ংক্রিয় করা আরও কঠিন হতে পারে।
দারিন দিমিত্রভ

1
বুঝতে পেরেছি ... xcopy "Project (ProjectDir) ভিউ \ Moduleahome \ Index.cshtml" "S (সলিউশনডির) এমইএফএমভিসিপিওসি \ ভিউস AH মডিউলহোম \" / ওয়াই / আইজি এই নিবন্ধটি আপনার ইনপুট সোশ্যাল.এমএসডিএন
ফোরামস

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

উত্স পাথ এবং গন্তব্য পথের উদ্ধৃতিগুলি লক্ষ্য করুন, তবে টেক্সট ফাইল বহির্ভূত হওয়ার পথে নয়।

এক্সক্লুডডাইল্ডলিস্ট.টেক্সট এর সামগ্রী নিম্নলিখিত: .cs \

আমি এই কমান্ডটি আমার সমাধানের একটি প্রকল্প থেকে অন্যটিতে এবং .cs ফাইলগুলি বাদ দিয়ে ফাইল অনুলিপি করতে ব্যবহার করছি using

/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.

ধন্যবাদ. / বর্জন করুন: your-source-pathএবং এর সাথে উদ্ধৃতি যুক্ত করার পরে কাজ করে your-destination-path। এই উদ্ধৃতিগুলি ছাড়া এটি মোটেও কার্যকর হয় না।
AechoLiu

@ এচলোলিউ আপনার ফাইল পথে ফাঁকা স্থান যেমন উদ্বৃত্ত থাকে সর্বদা প্রয়োজন "My File.txt"
ফিলিপ রোমেরো

14

xcopy "$ (TargetDir) * $ (টার্গেটেক্সট)" "$ (সলিউশনডির) \ স্ক্রিপ্টস \ মাইগ্রেশনস্ক্রিপ্টস \ গ্রন্থাগার \" / এফ / আর / ওয়াই / আই

/ এফ - সম্পূর্ণ উত্স এবং লক্ষ্য ফাইলের নাম প্রদর্শন করে

/ আর - এটি কেবল পঠনযোগ্য ফাইলগুলিকে ওভাররাইট করবে

/ ওয়াই - একটি বিদ্যমান ফাইল (গুলি) ওভাররাইট করার অনুরোধ রোধ করে

/ আমি - ধরে নিই যে গন্তব্যটি ডিরেক্টরি (তবে অবশ্যই এটি শেষ হবে)

একটি সামান্য কৌশল - লক্ষ্যতে আপনার অবশ্যই অক্ষরের সাথে শেষ হওয়া উচিত - এক্সকপিটি বলতে যে লক্ষ্যটি ডিরেক্টরি নয়, ফাইল নয়!


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

এটি ব্যবহার নোট করুন। Tar (টার্গেটডির) ইতিমধ্যে '\' "ডি: \ মাইপ্রজেক্ট \ বিন \" = $ (টার্গেটডির) রয়েছে

আপনি কমান্ড সম্পাদকটিতে ম্যাক্রো খুঁজে পেতে পারেন

এখানে চিত্র বর্ণনা লিখুন


1
@ হারশিলডোশি প্রকল্প → প্রকল্পের সম্পত্তি → ইভেন্টগুলি তৈরি করুন → পোস্ট বিল্ডইভেন্ট
পোলাকস

3

এই কমান্ডটি আমার জন্য কবজির মতো কাজ করে:

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

এটি পুনরুক্তরূপে প্রতিটি dllএবং exeফাইলটি অনুলিপি থেকে বা এর MySolutionPath\librariesমধ্যে অনুলিপি করে ।bin\debugbin\release

আপনি এখানে আরও তথ্য পেতে পারেন


2

পূর্ববর্তী উত্তরগুলির মতো, আমিও পরামর্শ দিচ্ছি xcopy। যাইহোক, আমি /excludeপরামিতি সহ হলজিয়ার এঞ্জেনের উত্তর যুক্ত করতে চাই । প্যারামিটারের সাথে একটি বাগ রয়েছে যা দীর্ঘস্থায়ী পথের নাম বা ফাঁকা স্থানগুলির সাথে কাজ করা থেকে বিরত রাখছে, কারণ উদ্ধৃতিগুলি কাজ করবে না। পাথের নামগুলি "ডস" - "ডকুমেন্টস" "ডকুমেন্ট ~ 1" তে অনুবাদ করার সাথে ফর্ম্যাটে থাকা উচিত ( এই উত্স অনুসারে )।

সুতরাং, আপনি যদি para প্যারামিটারটি বাদ দেন তবে এখানে একটি কার্যকারিতা রয়েছে :

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.