উত্তর:
প্রাক- এবং পোস্ট-বিল্ড ইভেন্টগুলি ব্যাচের স্ক্রিপ্ট হিসাবে চলমান। আপনি একটি শর্তাধীন বিবৃতি করতে পারেন $(ConfigurationName)
।
এই ক্ষেত্রে
if $(ConfigurationName) == Debug xcopy something somewhere
এফওয়াইআই, আপনাকে গোটো ব্যবহার করার দরকার নেই। শেল আইএফ কমান্ডটি বৃত্তাকার বন্ধনীগুলির সাথে ব্যবহার করা যেতে পারে:
if $(ConfigurationName) == Debug (
copy "$(TargetDir)myapp.dll" "c:\delivery\bin" /y
copy "$(TargetDir)myapp.dll.config" "c:\delivery\bin" /y
) ELSE (
echo "why, Microsoft, why".
)
"$(ConfigurationName)"
যদি আপনি ত্রুটির কোড 255
$(ConfigurationName)
খালি (পোস্ট-বিল্ড ইভেন্ট কমান্ড লাইন)। if "$(Configuration)" == "Debug"
আমার জন্য কাজ। বিটিডাব্লু, আপনি যদি অন্য সমস্ত কনফিগারেশনে কিছু করতে চান তবে ব্যবহার করুন if NOT "$(Configuration)" == "Debug"
।
আপনার পোস্ট বিল্ড ইভেন্টটি স্বাভাবিকের মতো যুক্ত করুন। তারপরে আপনার প্রকল্পটি সংরক্ষণ করুন, এটিকে নোটপ্যাডে খুলুন (বা আপনার প্রিয় সম্পাদক) এবং পোস্টবিল্ডএভেন্ট সম্পত্তি গোষ্ঠীতে শর্ত যুক্ত করুন। এখানে একটি উদাহরণ:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>
cd "$(ProjectDir)"
প্রসারিত cd ""
।
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ConfigurationName) == Debug"> <Exec Command="your command"/></Target>
। ম্যাক্রো ভেরিয়েবল এবং সবকিছু স্বাভাবিক হিসাবে কাজ করে।
বিকল্পভাবে (যেহেতু ইভেন্টগুলি একটি ব্যাচ ফাইলে রাখা হয় এবং তারপরে ডাকা হয়), নিম্নলিখিতটি ব্যবহার করুন (ইভেন্টের বিল্ড বাক্সে, কোনও ব্যাচের ফাইলে নয়):
if $(ConfigurationName) == Debug goto :debug
:release
signtool.exe ....
xcopy ...
goto :exit
:debug
' Debug items in here
:exit
এই ভাবে আপনি কোন কনফিগারেশনের জন্য ঘটনা করতে পারেন, এবং এখনও বরং তাদের একটি ব্যাচ ফাইলে পাস থাকার চেয়ে ম্যাক্রো সঙ্গে এটি পরিচালনা, যে মনে %1
হয় $(OutputPath)
, ইত্যাদি
Error 1 The command "C:\MyProject\postbuild.bat" exited with code 99. MyProject
if
এবং ব্যবহার করতে পারেনgoto :$(ConfigurationName)
ভিজ্যুয়াল স্টুডিও 2015: সঠিক বাক্য গঠনটি (এটি একটি লাইনে রাখুন):
if "$(ConfigurationName)"=="My Debug CFG" ( xcopy "$(TargetDir)test1.tmp" "$(TargetDir)test.xml" /y) else ( xcopy "$(TargetDir)test2.tmp" "$(TargetDir)test.xml" /y)
এখানে ত্রুটি নেই 255।
ভিজ্যুয়াল স্টুডিও 2019 হিসাবে, আধুনিক .csproj
ফর্ম্যাটটি Target
উপাদানটিতে সরাসরি একটি শর্ত যুক্ত করে :
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="nswag run nswag.json" />
</Target>
ইউআই এটি সেট আপ করার কোনও উপায় সরবরাহ করে না, তবে Configuration
আপনি যদি ইউআইয়ের মাধ্যমে পরিবর্তনগুলি করেন তবে এটি নিরাপদে স্থানটি নিরাপদে রেখে দেবে বলে মনে হয়।
আপনি কনফিগারেশন নামটি পোস্ট-বিল্ড স্ক্রিপ্টে পাস করতে পারেন এবং এটি চালানো উচিত কিনা তা দেখতে সেখানে এটি পরীক্ষা করে দেখতে পারেন।
এর সাথে কনফিগারেশন নামটি পাস করুন $(ConfigurationName)
।
এটি পরীক্ষা করা আপনি কীভাবে বিল্ড-পরবর্তী পদক্ষেপটি বাস্তবায়ন করছেন তার উপর ভিত্তি করে - এটি কমান্ড-লাইন আর্গুমেন্ট হবে।
এটি ভিজ্যুয়াল স্টুডিও 2015-এ আমার জন্য কাজ করে।
আমি সমস্ত ডিএলএল ফাইলগুলি আমার সলিউশন ফোল্ডারের মতো একই স্তরের লাইব্রেরি ফোল্ডারে অবস্থিত একটি ফোল্ডার থেকে প্রকল্পটি তৈরির টার্গেট ডিরেক্টরিতে কপি করি copy
আমার প্রকল্প ডিরেক্টরি থেকে একটি আপেক্ষিক পথ ব্যবহার করে এবং ফোল্ডার কাঠামো উপরে .. \ .. \ lib সহ দুটি পদক্ষেপ
MySolutionFolder
.... MyProject
প্রচ্ছদ
if $(ConfigurationName) == Debug (
xcopy /Y "$(ProjectDir)..\..\lib\*.dll" "$(TargetDir)"
) ELSE (echo "Not Debug mode, no file copy from lib")
যে কোনও প্রকল্প সেটিংয়ের মতো, বিল্ডভেন্টগুলি কনফিগারেশন অনুযায়ী কনফিগার করা যায়। সম্পত্তি পৃষ্ঠা ডায়ালগের ড্রপডাউনটিতে আপনি যে কনফিগারেশনটি পরিবর্তন করতে চান তা কেবল নির্বাচন করুন এবং পোস্ট বিল্ড পদক্ষেপটি সম্পাদনা করুন।
ভিজ্যুয়াল স্টুডিও ২০১২-এ আপনাকে ব্যবহার করতে হবে (আমি ভিজুয়াল স্টুডিও ২০১০-তেও ভাবি)
if $(Configuration) == Debug xcopy
$(ConfigurationName)
ম্যাক্রো হিসাবে তালিকাভুক্ত ছিল, তবে এটি বরাদ্দ করা হয়নি।
তুলনা করুন: বিল্ড কমান্ড এবং বৈশিষ্ট্যগুলির জন্য ম্যাক্রো