2012-06-28 14 views
17

मैं अपनी बिल्ड प्रक्रिया में एक बग डिबग कर रहा हूं जो कभी-कभी होता है लेकिन मैं इसे सीधे पुन: उत्पन्न नहीं कर सकता। मैं टीमसिटी के साथ msbuild का उपयोग कर रहा हूँ।msbuild में वृद्धिशील साफ क्या है और यह कब ट्रिगर किया जाता है?

Some.Interop.dll 
    Dependency-> SharedDllABC.dll 

SomeService.exe 
    Depenendcy-> Some.Interop 

आमतौर पर अंतिम सेवा exectuable अपनी रिहाई निर्देशिका में हो जाता है:

Some.Interop 
SharedDllABC.Dll 
ServiceExectuable.exe 

हालांकि मुझे लगता है कि कभी कभी तृतीयक निर्भरता हमारे MSBuild लॉग में देख सकते हैं

मैं इस तरह निर्भरता पदानुक्रम है सब कुछ बनने के बाद एक वृद्धिशील स्वच्छ के दौरान हटा दिया जाता है जिसके परिणामस्वरूप:

Some.Interop 
ServiceExectuable.exe 
,210

आप इसे यहाँ MSBuild लॉग में देख सकते हैं:

[src\SomeService\SomeService.csproj] _TimeStampAfterCompile 
[12:32:43]: [src\SomeService\SomeService.csproj] Compile 

// some other targets 

[12:32:43]: [src\SomeService\SomeService.csproj] _CopyFilesMarkedCopyLocal 
[12:32:43]:  [_CopyFilesMarkedCopyLocal] Copy 
[12:32:43]:   [Copy] Copying file from "C:Projects\trunk\src\Some.Interop\bin\Release\Some.Interop.dll" to "bin\Release\Some.Interop.dll". 

// some other targets 

[src\Project\SomeService\SomeService.csproj] IncrementalClean 
[18:54:42]:   [IncrementalClean] Delete 
[18:54:42]:    [Delete] Deleting file "C:\Projects\trunk\src\Project\SomeService\bin\Release\SharedDllABC.dll". 
[18:54:42]:    [Delete] Deleting file "C:\Projects\trunk\src\Project\SomeServiceService\bin\Release\SharedDllABC.pdb". 
[18:54:42]:  [src\Project\SomeService\SomeService.csproj] CoreBuild 
[18:54:42]:  [src\Project\SomeService\SomeService.csproj] AfterBuild 
[18:54:42]:  [src\Project\SomeService\SomeService.csproj] Build 

यह मेरा सीधा MSBuild उत्पादन, मैं सिर्फ इस परियोजना के नाम/dll नाम मेरी उदाहरण मैच के लिए बदल जाता है। जब तक इस वृद्धिशील स्वच्छता हुई है SomeService.csproj पहले ही बनाया जा चुका है। आप देख सकते हैं कि इसकी प्रतिलिपि नहीं मिल रही है। हालांकि अन्य एमएसबिल्ड लॉग में यह ठीक से कॉपी हो जाता है और फिर वृद्धिशील साफ इसे हटा नहीं देता है।

मुझे लगता है कि this post से वृद्धिशील साफ पिछले बिल्डों से बनाए गए डीएलएल को साफ करना है, लेकिन यह समझा नहीं जाता है कि यह समय कितना समय होता है जब यह डीएलएल नहीं बनाया जाता है। दृश्य स्टूडियो में यह हमेशा भी काम करता है।

मुझे लगता है कि मैं सिर्फ यह क्या में किक करने का कारण बनता है, और हो सकता है क्या बातें मैं जब इस तरह एक स्थिति डीबगिंग के लिए दिखना चाहिए यह जानना चाहेंगे कि Incremental clean है क्या चाहते हैं, (आदि विधानसभा संस्करणों, timestamps?)

+2

'' IncrementalClean' ग में कार्यान्वित किया जाता: \ Windows \ Microsoft.NET \ फ्रेमवर्क \ v4.0.30319 \ Microsoft.Common.targets'। वहां बहुत सारे तर्क हैं ... यदि आप और जानना चाहते हैं, तो वहां कुछ प्रिंट जोड़ें - ' ', और शायद आप देखेंगे कि तर्क क्या है है। – Jonathan

+1

मुझे बहुत ही समान समस्याएं आ रही हैं। क्या आपने कभी अपना अपराधी पाया है? –

+0

सेबेस्टियन, मैं इसे कभी भी समझने में सक्षम नहीं था। मैं जो कर रहा हूं वह इस परियोजना पर उस परियोजना से हार्ड निर्भरता पैदा कर रहा था जिसकी आवश्यकता थी। यह आदर्श नहीं था लेकिन यह काम करता है। मेरी टीम के साथ आने वाले कुछ अन्य समाधान अपेक्षित डीएल के परीक्षण के लिए यूनिट परीक्षण बनाने के लिए थे, जो कम से कम विफल बिल्डों को ग्राहकों/परीक्षण मशीनों पर जाने से रोकते थे। – devshorts

उत्तर

1

निम्नलिखित का प्रयास करें:

जोड़ें:

<Target Name="IncrementalClean" /> 
कि सभी परियोजनाओं में शामिल है एक .targets फाइल करने के लिए

से ->https://github.com/Microsoft/msbuild/issues/1054

संबंधित मुद्दे