हम एक सी # अनुप्रयोग विकसित कर रहे हैं जो कुछ COM पुस्तकालयों (उदाहरण के लिए ऑटोआईटी) का संदर्भ देता है।बिल्ड सर्वर पर COM संदर्भित DLL को पंजीकृत करना
मैं तीसरे पक्ष के "लिब्स" फ़ोल्डर में स्रोत नियंत्रण के तहत सभी संदर्भित घटक शामिल कर रहा हूं।
समस्या यह है कि COM dll के पास .csproj फ़ाइल में हिंटपाथ प्रॉपर्टी नहीं है, और मुझे लगता है कि इन्हें regsvr32 (या किसी प्रकार की स्क्रिप्ट का उपयोग करके मैन्युअल रूप से पंजीकृत होना चाहिए)।
मैं वर्तमान में एक एमएसबील्ड स्क्रिप्ट बनाने की तलाश में हूं जो हर निर्माण से पहले चलाएगा, हालांकि मुझे पता नहीं लगा कि मुझे मैन्युअल रूप से regsvr32.exe को कॉल करना चाहिए या कुछ पूर्वनिर्धारित एमएसबिल्ड कार्य का उपयोग करना चाहिए?
वर्तमान में, यह है कि क्या मैं एक परीक्षण के रूप attmpted है:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<ItemGroup>
<MyAssemblies Include="D:\*.dll" />
</ItemGroup>
<Target Name="Build">
<RegisterAssembly
Assemblies="@(MyAssemblies)" >
</RegisterAssembly>
</Target>
</Project>
यह त्रुटियों कि DLLs मैं दिए गए फ़ोल्डर में रखा गया है वैध DLLs नहीं हैं उत्पन्न करता है।
इस समस्या के लिए एक अच्छा समाधान क्या है?
संपादित करें:
परियोजनाओं का संदर्भ COM DLLs .csproj फ़ाइल में इस के समान कुछ है:,
<COMReference Include="AutoItX3Lib">
<Guid>{F8937E53-D444-4E71-9275-35B64210CC3B}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
यह अन्य कामयाब विधानसभाओं के रूप में किसी भी संकेत पथ शामिल नहीं है एक निर्माण सर्वर पर इतना , संदर्भित COM डीएल नहीं मिला है।
REGSVR32 का उपयोग कर बिल्ड सर्वर पर COM dll को पंजीकृत करते समय, निर्माण सफल होता है।
मेरे पास दोनों प्रकार के पुस्तकालय और इंटरऑप असेंबली दोनों मेरे स्रोत नियंत्रण (गिट) में चेक किए गए हैं। इंटरऑप का संदर्भ देना पर्याप्त नहीं है। Tlbimp का उत्पादन क्या है? मैं इसे आगे की बजाय निर्माण प्रक्रिया के हिस्से के रूप में करता हूं, जब बिल्ड एनवी को अपग्रेड करते समय, मैं बस सभी स्क्रिप्ट को कॉपी कर सकता हूं और अधिक सर्वरों में विस्तार कर सकता हूं और बिना किसी पूर्व चरण –
के साथ संग्रहीत सभी तर्क प्राप्त कर रहा हूं Tlbimp का आउटपुट है इंटरऑप असेंबली। मैं "पर्याप्त नहीं है" के साथ कुछ भी नहीं कर सकता, आपको उस बेहतर त्रुटि का वर्णन करना होगा जो आपको बेहतर हो। –
मैंने अपना मूल प्रश्न अपडेट किया है। इंटरऑप डीएल "निर्भरता" फ़ोल्डर में मौजूद है, हालांकि .csproj और इस फ़ाइल के बीच कोई लिंक नहीं है, इसलिए बिल्ड इस फ़ाइल को नहीं उठा रहा है। मेरे देव envinronment पर, यह ठीक काम करता है क्योंकि मेरे पास मूल सॉफ्टवेयर पैकेज स्थापित है (उदाहरण के लिए ऑटोआईटी), हालांकि बिल्ड सर्वर पर यह स्थापित नहीं है और इसलिए निर्माण संकलन से पहले कुछ अतिरिक्त कदम किए बिना विफल रहता है .. –