ভিজ্যুয়াল স্টুডিওতে বিল্ড টাইম প্রদর্শিত হচ্ছে?


177

আমাদের বিল্ড সার্ভারটি আমাদের সি ++ প্রকল্পগুলির একটি তৈরি করতে খুব বেশি সময় নিচ্ছে। এটি ভিজ্যুয়াল স্টুডিও ২০০৮ ব্যবহার করে de সমাধানে প্রতিটি প্রকল্প তৈরি করতে সময় লগ করার জন্য ডিভেনভি.কম পাওয়ার কোনও উপায় আছে, যাতে আমি জানি যে কোথায় আমার প্রচেষ্টাকে ফোকাস করতে হবে?

উন্নত হার্ডওয়্যার এই ক্ষেত্রে একটি বিকল্প নয়।

আমি আউটপুট ভার্বোসিটি সেট করার চেষ্টা করেছি (সরঞ্জাম / বিকল্প / প্রকল্পসমূহ এবং সমাধান / বিল্ড এবং রান / এমএসবাইল্ড প্রকল্পের আউটপুট ভার্বোসটি বিল্ড করার জন্য)। আইডিইতে এর কোনও প্রভাব আছে বলে মনে হয় না।

কমান্ড লাইন থেকে এমএসবিল্ড চলাকালীন (এবং ভিজ্যুয়াল স্টুডিও ২০০৮-এর জন্য এটি এমএসবিল্ড ভি ৩.৫ হওয়া দরকার), এটি শেষ সময়টি শেষ সময় প্রদর্শিত হয়, তবে আইডিইতে নয়।

আমি সমাধানের প্রতিটি প্রকল্পের জন্য সত্যই সময়-সময়কৃত প্রতিবেদন চেয়েছিলাম, যাতে বিল্ড প্রক্রিয়াটি কোথায় সময় নিচ্ছে তা আমি বুঝতে পারি।

বিকল্পভাবে, যেহেতু আমরা প্রকৃতপক্ষে বিল্ড প্রক্রিয়াটি চালানোর জন্য ন্যান্ট ব্যবহার করি (আমরা জেটব্রেইনস টিমসিটি ব্যবহার করি), তাই ন্যান্টকে প্রতি পদক্ষেপের জন্য সময় গ্রহণ করার জন্য কী উপায় পাওয়া যায়?

উত্তর:


205

মেনু সরঞ্জামসমূহবিকল্পসমূহপ্রকল্পগুলি এবং সমাধানগুলিভিসি ++ প্রকল্প সেটিংসবিল্ডিংয়ের কাজ করা উচিত।


78
কেউ মনে করতে পারে এটি "বিল্ড অ্যান্ড রান" এর অধীনে রয়েছে তবে নুওও, এটাই সহজ হত
টমাস বনিনি

6
তারা যদি এটি সেখানে রাখত তবে অন্য কেউ অভিযোগ করতেন যে তারা যেখানে এটি প্রত্যাশা করবে তা নয়। এটিকে রাখার সর্বাধিক সুস্পষ্ট স্থানটি বিভিন্ন ব্যবহারকারীর পক্ষে আলাদা।
জেস্পের

4
এর আউটপুট কি?
কর্নেল আতঙ্ক

4
@AndreasBonini অধীনে: তৈরি করুন এবং রান আপনি পাবেন MSBuild প্রকল্পের বিল্ড আউটপুট ভারবোসিটি আপনি উপরের সেট করতে পারেন যা সংক্ষিপ্ত , অত্যধিক সময় জন্য।
জোয়

4
এটি একটি বিল্ড স্টেজের মধ্যে স্বতন্ত্র কাজগুলি প্রোফাইল করার জন্য ভাল তবে পুরো বিল্ডটির সারাংশ দেয় না।
ফার্নান্দো গঞ্জালেজ সানচেজ

88

সরঞ্জামগুলিতে যান → বিকল্পগুলি → প্রকল্পগুলি এবং সমাধানগুলি → বিল্ড এবং রান করুন → এমএস বিল্ড প্রকল্প বিল্ড আউটপুট ভার্বোসিটি - "সাধারণ" বা "বিস্তারিত" এ সেট করুন এবং বিল্ড সময় আউটপুট উইন্ডোতে উপস্থিত হবে।


2
ভিজ্যুয়াল স্টুডিও 2010 এর আগে, ভিজ্যুয়াল সি ++ প্রকল্পগুলি এমএসবিল্ড ব্যবহার করে না, তাই এই সেটিংটির কোনও প্রভাব নেই। যদিও অন্যান্য প্রকল্পের প্রকারের জন্য সূক্ষ্ম কাজ করে।
রজার লিপসক্বে

23
"বিস্তারিত" এর পরিবর্তে "সাধারণ" এ সেট করুন যথেষ্ট :)
andrecarlucci

7
এটিকে সাধারনত সেট করা প্রকৃতপক্ষে যা চান তা হ'ল ভিসি ++ প্রকল্প সেটিংস -> বিল্ড টাইমিংয়ের মাধ্যমে খুব বেশি বিবরণ দেখানো হয়
গীতা

1
বেশিরভাগ লোকেরা ঠিক এটি চান - মোট সময়, না যে ক্লকম্পাইল একটি প্রকল্পে 22424ms নিয়েছিল। Ctrl + Q, <Enter> তৈরি করুন এবং চালান, এবং প্রথমে "ন্যূনতম "টিকে" স্বাভাবিক "এ পরিবর্তন করুন।
টমাসজ গ্যান্ডার

35

ভিজ্যুয়াল স্টুডিও 2012 - 2019

  • এমএস বিল্ড প্রকল্পগুলির জন্য (যেমন সমস্ত। নেট-প্রকল্প):
    ক্লিক করুন Tools -> Optionsএবং তারপরে নির্বাচন করুন Projects and Solutions -> Build and Run। পরিবর্তন MSBuild project build output verbosityকরুন Normal। সুতরাং এটি নির্মিত প্রতিটি সমাধান প্রকল্পে সময় অতিবাহিত প্রদর্শন করবে। তবে দুর্ভাগ্যজনকভাবে সমস্ত প্রকল্পের জন্য কোনও বিলম্বিত সময়ের যোগফল নেই। আপনি বিল্ড শুরু হওয়া টাইমস্ট্যাম্পটিও দেখতে পাবেন

  • সি / সি ++ প্রকল্পের জন্য:

ক্লিক করুন Tools -> Optionsএবং তারপরে নির্বাচন করুনProjects and Solutions -> VC++ Project Settings

পরিবর্তন Build Timingকরুন Yes


4
আপনি যে সমাধানটি দিয়েছেন তা সিএস ++ প্রকল্পের জন্য আমার জন্য ভিএস 2015 তে কাজ করে। এছাড়াও, আমি এই সমাধানটি Build Timingকেবলমাত্র মোট সময় প্রদর্শন করার পরিবর্তে ব্যবহার করতে পছন্দ করি ।
বা বি

1
VS2019 দিয়ে কোনও পরিবর্তন নেই। সমস্ত এমএসবিল্ড প্রকল্পের (সি / সি ++ সহ) মোট "সময় অতিবাহিত" প্রদর্শিত হয়।
ফারওয়ে

9

ভিজ্যুয়াল স্টুডিও 2012 এর জন্য আপনি বিল্ড মনিটর এক্সটেনশনটি ব্যবহার করতে পারেন ।


1
আপনি এটি ভিজ্যুয়াল স্টুডিও 2013 এবং 2015 এর জন্যও ব্যবহার করতে পারেন।
শাদ

6

আপনি VS2005 এ আটকে থাকলে আপনি বনাম-বিল্ড-টাইমার প্লাগইন ব্যবহার করতে পারেন । একটি বিল্ড সম্পূর্ণ হওয়ার পরে এটি মোট সময় নেওয়া এবং প্রকল্পের প্রতিটি সময়কালের (alচ্ছিক) সংক্ষিপ্তসার দেখায়।

দাবি পরিত্যাগী; আমি এটি লিখেছিলাম. এবং হ্যাঁ, আমার একটি ইনস্টলার তৈরি করা দরকার ... একদিন!


আপনার ইনস্টলারটি কি উপলভ্য
মার্টিন

6

সরঞ্জাম-> বিকল্পগুলি -> প্রকল্পগুলি এবং সমাধানগুলি-> বিল্ড এবং রান করুন->

"ন্যূনতম" থেকে "সাধারণ" তে "এমএসবিল্ড প্রকল্পের বিল্ড আউটপুট ভার্বোসিটি" সেট করুন


4

আপনি যদি নিজের বিল্ডটি কল্পনা করতে চান তবে আপনি IncrediBuild ব্যবহার করতে পারেন u ইনক্রেডিইউইড এখন ভিজুয়াল স্টুডিও 2015 আপডেট 1 এর অংশ হিসাবে বিনামূল্যে স্ট্যান্ডেলোন-মোডে উপলব্ধ (আপনার স্থানীয় মেশিনে কেবলমাত্র 8 টি কোরের জন্য বিতরণ করা হয়নি তবে ব্যবহারের জন্য)

দাবি অস্বীকার: আমি ইনক্রেডি বিল্ডের পক্ষে কাজ করি


4

যেহেতু আপনার প্রশ্নে কমান্ড লাইন থেকে ডিভেনভ ব্যবহার করা জড়িত, তাই আমি এমএসবাইল্ড (যা পরিবর্তন ছাড়াই .sln ফাইলগুলি তৈরি করতে পারে) ব্যবহার করার পরামর্শও দেব।

msbuild /fl /flp:Verbosity=diagnostic Your.sln

msbuild /? ফাইললগারের জন্য আপনাকে অন্যান্য দরকারী বিকল্পগুলি প্রদর্শন করবে।


4

আমি বিল্ডের সময়গুলি পরিমাপ করতে এবং কোনও গ্রাফে ইভেন্টের ক্রম উপস্থাপন করতে একটি এক্সটেনশন তৈরি করেছি: ভিজ্যুয়াল স্টুডিও বিল্ড টাইমার

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

এটি ভিজ্যুয়াল স্টুডিও মার্কেট প্লেসে উপলভ্য এবং ভিএস ২০১৫, ভিএস ২০১7 এবং ভিএস ২০১৯ এর জন্য কাজ করে।

আমি ভিজ্যুয়াল উপস্থাপনাটি বেশ সহায়ক বলে মনে করি। কোন প্রকল্পগুলিতে বেশি সময় লাগে তা প্রদর্শন করা ছাড়াও এটি তাদের মধ্যে নির্ভরতাও দেখায়, অর্থাত্ প্রকল্পগুলি যা অন্যরা শুরু হওয়ার আগেই শেষ হওয়ার জন্য অপেক্ষা করে। এইভাবে আপনি বিল্ডে বাধাগুলি চিহ্নিত করতে পারেন এবং আপনার বিল্ডটির সমান্তরালতা বাড়ানোর জন্য নির্ভরতাগুলি কী ভাঙতে হবে তা দেখতে পারেন।


3
আপনি দয়া করে ভিএস 2019 সমর্থন করার জন্য এটি আপগ্রেড করতে পারেন
কনস্টান্টিন চেরনভ

3
আমি আজকাল কিছুটা ব্যস্ত, তবে এটি আমার পরিকল্পনার মধ্যে রয়েছে।
অপেট্রোক

2

আমি এখানেই শেষ করেছি কারণ আমি কেবল বিল্ড আউটপুটে অন্তর্ভুক্ত তারিখ এবং সময় চেয়েছিলাম। অন্যরা যদি echo %date% %time%প্রকল্পের অধীনে প্রাক-বিল্ড এবং / বা পোস্ট-বিল্ড ইভেন্টগুলিতে সংস্থান করার মতো বৈশিষ্ট্যগুলি Proper সংকলনইভেন্ট ইভেন্টগুলি যুক্ত করার মতো সহজ কিছু অনুসন্ধান করে থাকে ।


2

প্রথমে একটি বিল্ড করুন এবং দেখুন যে বিল্ড আউটপুটে ( Ctrl+ Homeআউটপুট উইন্ডোতে) কোন প্রকল্পটি প্রথম প্রদর্শিত হচ্ছে । প্রকল্পটি ডান ক্লিক করুন → প্রকল্পের বৈশিষ্ট্য ile সংকলনইভেন্টগুলি তৈরি করুনপ্রাক-বিল্ড । এবং echo ###########%date% %time%#############

সুতরাং প্রতিবার আউটপুট উইন্ডোতে বিল্ড ফলাফল (বা বিল্ড চলাকালীন) দেখুন Ctrl+ করুন Homeএবং সেই অঞ্চলে কোথাও আপনার মুখের দিকে তাকিয়ে সময় এবং তারিখ!

ওহ এবং বিল্ড অর্ডার পরিবর্তিত হতে পারে আপনি অনেক প্রকল্পে এই বিবরণ যুক্ত করতে পারেন :)


আমি এর চেয়ে ভাল সমাধান খুঁজে পেলাম! ###

সরঞ্জামবিকল্পপ্রকল্প & সমাধানতৈরি করুন এবং রানMSBuild প্রকল্পের বিল্ড আউটপুট ভারবোসিটি = স্বাভাবিক (অথবা উপরে সংক্ষিপ্ত )। এটি আউটপুট উইন্ডোটির শুরুতে / শীর্ষে সময় যুক্ত করে। আউটপুট উইন্ডোতে Ctrl+ করা Homeউচিত।

যদি আমরা দেখতে চাই যে প্রতিটি প্রকল্পে কত সময় নেয় তবে প্রকল্পগুলি এবং সমাধানগুলিভিসি ++ প্রকল্প সেটিংসসময় নির্মানের = হ্যাঁ । এটি সমস্ত প্রকল্পের জন্য প্রযোজ্য; "ভিসি ++" বিভ্রান্তিকর।


1

আপনি যদি কোনও বাহ্যিক প্রোগ্রাম শুরু করতে চান যা আপনার মোট বিল্ডিংয়ের সময়গুলি ট্র্যাক করতে পারে তবে আপনি ভিএস ২০১০ (এবং সম্ভবত পুরানো) এর জন্য নিম্নলিখিত সমাধানটি ব্যবহার করতে পারেন। নীচের কোডটি কেসি মুরেরেই সিটিমে ব্যবহার করে। অবশ্যই আপনি এটি বিল্ড টাইম মুদ্রণের জন্যও ব্যবহার করতে পারেন।

ম্যাক্রো এক্সপ্লোরার খুলুন এবং এর আগে নিম্নলিখিতটি আটকে দিন End Module:

Dim buildStart As Date
Private Sub RunCtime(ByVal StartRatherThanEnd As Boolean)
    Dim Arg As String
    Dim psi As New System.Diagnostics.ProcessStartInfo("ctime.exe")
    If StartRatherThanEnd Then
        psi.Arguments = "-begin"
    Else
        psi.Arguments = "-end"
    End If
    psi.Arguments += " c:\my\path\build.ctm"
    psi.RedirectStandardOutput = False
    psi.WindowStyle = ProcessWindowStyle.Hidden
    psi.UseShellExecute = False
    psi.CreateNoWindow = True
    Dim process As System.Diagnostics.Process
    process = System.Diagnostics.Process.Start(psi)
    Dim myOutput As System.IO.StreamReader = process.StandardOutput
    process.WaitForExit(2000)
    If process.HasExited Then
        Dim output As String = myOutput.ReadToEnd
        WriteToBuildWindow("CTime output: " + output)
    End If
End Sub

Private Sub BuildEvents_OnBuildBegin(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildBegin
    WriteToBuildWindow("Build started!")
    buildStart = Date.Now
    RunCtime(True)
End Sub

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
    Dim buildTime = Date.Now - buildStart
    WriteToBuildWindow(String.Format("Total build time: {0} seconds", buildTime.ToString))
    RunCtime(False)
End Sub

Private Sub WriteToBuildWindow(ByVal message As String)
    Dim win As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
    Dim ow As OutputWindow = CType(win.Object, OutputWindow)
    If (Not message.EndsWith(vbCrLf)) Then
        message = message + vbCrLf
    End If
    ow.OutputWindowPanes.Item("Build").OutputString(message)
End Sub

উত্তর থেকে নেওয়া এখানে এবং এখানে


1

বিকল্পগুলি -> প্রকল্পগুলি এবং সমাধান -> ভিসি ++ প্রকল্প সেটিংস -> সময় নির্মান

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.