2009-04-29 13 views
5

Can I build 2 or more dlls from C# project in Visual Studio 2008? से, मेरे पास केवल एक बड़ी परियोजना बनाने का एक और विचार है। उसके बाद, मैं एक परियोजना डीएल (जिसमें कई कक्षाएं शामिल हैं) को पोस्ट एप प्रोजेक्ट का उपयोग करके प्रति दिन 1 डीएल प्रति कक्षा में अलग करें, विन ऐप प्रोजेक्ट को कॉल करने के लिए (एक बड़ा डीएल अलग करने के लिए)। यह कैसे करना है?क्या मैं प्रति वर्ग 1 डीएल में एक बड़ा डीएल अलग कर सकता हूं?

इसके अलावा, मुझे एक बड़ी डीएल में भी संलग्न फ़ाइल को प्रबंधित करने की आवश्यकता है।

अद्यतन मुझे लगता है कि मुझे द्वारा इस समस्या को हल करने के लिए मार्गदर्शन कर सकता है कुछ चाल पाया कस्टम निर्माण? इसके अलावा, मुझे लगता है कि मैं कस्टम हैंडलर बना सकता हूं जो अलग मॉड्यूल फ़ाइल & al.exe का उपयोग कर गतिशील असेंबली फ़ाइल उत्पन्न करता है। लेकिन यह सुविधा मेरी अपेक्षा और अनैतिक है (स्रोत कोड शायद ही कभी बदला गया है)।

Multi-file Assemblies: What and How

How to: Build a Multifile Assembly

POCO Custom Multifile Assembly and ReSharper

धन्यवाद,

+6

आप ऐसा क्यों करना चाहते हैं? –

+0

मुझे लगता है कि यदि आप हाइलाइट करते हैं कि यह सिल्वरलाइट नियंत्रण के प्रयोजनों के लिए है तो आपको बेहतर उत्तर मिलेगा ... –

+0

यदि आपके पास प्रदर्शित करने के लिए चांदी की रोशनी का उपयोग करने वाली बड़ी वेबसाइट है, तो आप होम पेज लोड करने में काफी समय व्यतीत करेंगे। –

उत्तर

3

इस समस्या यह है कि एक और सवाल में विस्तार से बताया गया था MSBuild के लिए कस्टम स्क्रिप्ट द्वारा हल किया गया है।

<ItemGroup> 
    <Compile Include="Class1.cs"> 
    <Plugin>true</Plugin> 
    </Compile> 
    <Compile Include="Class2.cs" /> 
    <Compile Include="Class3.cs"> 
    <Plugin>true</Plugin> 
    </Compile> 
    <Compile Include="Program.cs" /> 
    <Compile Include="Properties\AssemblyInfo.cs" /> 
</ItemGroup> 

Visual studio one project with several dlls as output?

सुझाव के लिए @franko_camron धन्यवाद।

7

जवाब यह है कि तुम यहाँ हो जाएगा अन्य सवाल में जवाब से अलग नहीं है: put in a separate project for each separate dll

मैं आपसे क्या पूछना चाहता हूं कि "वर्ग" की परिभाषा की आपकी समझ क्या है। डीएलएल प्रति एक कक्षा का अर्थ है कि आप इस बात से परिचित नहीं हैं कि असेंबली, नामस्थान और कक्षाएं कैसे काम करती हैं।

हमें बताएं, आप वास्तव में क्या करना चाहते हैं? क्योंकि आपको लगता है कि आपको उस समस्या को हल करने के लिए क्या करना चाहिए (उदाहरण के लिए, प्रति वर्ग एक डीएलएल बनाना) व्यावहारिक नहीं है।

अद्यतन

आपकी आवश्यकता (जैसे, सिल्वरलाइट वेब अनुप्रयोग) के संदर्भ को देखते हुए, मेरी निष्कर्ष है कि कई DLLs के लिए अपनी कक्षाओं बंटवारे एक प्रदर्शन में सुधार का कारण नहीं बनेगा एक ASP.NET वेब में है पेज है क्योंकि:

  • DLLs केवल सर्वर द्वारा उपयोग किया जाता है, वे कर रहे हैं HTTP के द्वारा डाउनलोड नहीं आपके ब्राउज़र को
  • एक बार एक वेब अनुप्रयोग द्वारा एक डीएलएल लोड हो जाने पर यह फिर से लोड नहीं करेगा - इस पर ध्यान दिए बिना कि कितने उपयोगकर्ता एक ही समय में आपकी साइट का उपयोग कर रहे हैं। प्रति सर्वर एक डीएलएल उदाहरण।
  • जब आप अपना वेब एप्लिकेशन शुरू करते हैं तो यह सभी डीएलएल लोड करेगा जो इसे संकलित करने के लिए निर्भर करता है, चाहे आप इसका उपयोग करेंगे या नहीं।

तो आपकी आवश्यकताओं के साथ, बैंडविड्थ सीमा पर विचार करते हुए, आपके आवेदन के लिए सिल्वरलाइट का उपयोग करना संभवतः सबसे अच्छा नहीं है। जिन मार्गों का आप अन्वेषण कर सकते हैं वे हैं:

  • एजेक्स तकनीक सीखना, विशेष रूप से JSON, (और शायद एएसपी नहीं।नेट AJAX और इसके दुरुपयोग आसानी से UpdatePanel)
  • सीखना jQuery नियंत्रण है कि जावास्क्रिप्ट में लागू करेंगे आप सिल्वरलाइट
+0

आप संबंधित प्रश्न – karlipoppins

+2

पर एक लिंक जोड़ना चाहते हैं, दूसरे शब्दों में "आप इस सवाल पूछते रहते हैं। मुझे नहीं लगता कि इसका मतलब है कि इसका मतलब क्या है!" :) –

+0

यह उनके प्रश्न में है। :) –

8

बस ... क्यों का उपयोग कर क्या करना चाहते हैं क्या लगता है? बहुत से डीएलएस होने पर ऐप स्टार्टअप पर प्रदर्शन प्रभाव पड़ सकता है ("संलयन" के कारण)। यह बहुत अधिक तत्काल परिपत्र संदर्भों से ग्रस्त होगा, जो खराब चीज़ है।

चूंकि .NET कोड (डिफ़ॉल्ट रूप से) पहली बार उपयोग किए जाने पर JITted प्राप्त होता है, उस एप्लिकेशन में उपयोग नहीं होने वाले डीएल में अतिरिक्त कक्षाएं होने पर बहुत अधिक प्रभाव नहीं पड़ता है। वे बस चुपचाप बैठते हैं, किसी से भी परेशान नहीं होते हैं।

प्रति कक्षा एक डीएल होने की सराहना प्रबंधन लागत तैनाती आदि उत्थान कर देगा।

सभी में

सभी, मैं यह करने के लिए एक समझदार कारण नहीं सोच सकते हैं ...

+0

क्योंकि मैं सिल्वरलाइट एप्लिकेशन बनाना चाहता हूं जैसे वेबफॉर्म (1 सिल्वरलाइट उपयोगकर्ता नियंत्रण 1 वेबपृष्ठ के बराबर)। तो, मुझे 1 सिल्वरलाइट उपयोगकर्ता नियंत्रण के लिए 1 डीएल बनाने की जरूरत है। –

+0

मैं कभी-कभी बीएलएल कक्षाओं के निर्माण के समय को कम करने के लिए डीएएल जैसे बड़े वर्गों को अलग करता हूं। लेकिन प्रत्येक वर्ग के लिए ऐसा करने के लिए, आप सही हैं; कोई "समझदार कारण" नहीं। – rizzle

+0

यह सच है। सभी एक ही स्थान पर आवेदन के लिए, यह विचार अनैतिक है। लेकिन सर्वर/क्लाइंट एप्लिकेशन के लिए, यह विचार बहुत अच्छा है, अगर यह सच हो सकता है (चांदी के पृष्ठ को लगभग पेज बनाने के बराबर बनाते हैं)। –

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