मेरे पास एक सी # प्रोजेक्ट है जिसमें मैंने आयरनआरबी प्रोग्राम एम्बेड किया है। प्रोजेक्ट (मेरी रूबी स्क्रिप्ट समेत) वितरण के लिए विजुअल स्टूडियो 2010 में एक .exe फ़ाइल में संकलित किया गया है। मैं IronRuby स्क्रिप्ट बूटस्ट्रैपिंग के लिए इस तरह के पैटर्न का उपयोग कर रहा हूं: http://pastebin.com/NKes1cyc (और जिमी Schementi यहां अधिक विस्तार से चला जाता है: http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html)।एक सी # प्रोजेक्ट में रूबी मणि को कैसे एम्बेड करें और इसे एम्बेडेड आयरनरुबी स्क्रिप्ट से इसकी आवश्यकता है?
मेरी समस्या: मैं अपने सी # असेंबली में एक मणि (json_pure) एम्बेड करना चाहता हूं और इसे रूबी स्क्रिप्ट से कॉल करना चाहता हूं।
कुछ संसाधनों मैंने पाया:
JRuby में, आप आसानी से एक जार फ़ाइल में एक रत्न पैकेज कर सकते हैं और फिर बस कार्यावधि में जार फ़ाइल की आवश्यकता होती है - http://blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar
irpack उपकरण (http://github.com/kumaryu/irpack पर) रूबी को एक .exe में संकलित करने में सक्षम है (मुझे लगता है कि यह गतिशील रूप से सी # प्रोजेक्ट बनाता है और संकलित करता है) रूबी मानक लाइब्रेरी को एम्बेड करते समय। लेकिन ऐसा लगता है कि यह केवल पूर्व-निर्मित IronRuby .dlls को एम्बेड कर रहा है, रूबी। आरबी फाइल नहीं। इस टूल का उपयोग करने का दृष्टिकोण काम करेगा यदि मैं यह समझ सकता हूं कि रुबी स्रोत फ़ाइलों को एक .dll में कैसे संकलित करना है।
मैं एक सी # विधानसभा में एक IronRuby मणि कैसे एम्बेड करूं (या एक .dll के लिए एक IronRuby मणि संकलन)?
संपादित करें:
पृष्ठ IronRuby कार्रवाई में 472 ("बाहरी पुस्तकालय का उपयोग करना") बताते हैं कि कैसे एक एम्बेडेड माणिक फ़ाइल के भीतर से मानक रूबी पुस्तकालयों की आवश्यकता होती है। यह क्रम खोज रास्तों संग्रह करने के लिए फ़ोल्डर (रों) जोड़ दिया जाता है, इस प्रकार है (संक्षिप्तता और स्पष्टता के लिए संपादित):
ScriptEngine engine = IronRuby.Ruby.CreateEngine();
var searchPaths = engine.GetSearchPaths().Concat(new[]
{
"C:\\Program Files (x86)\\IronRuby 1.1\\Lib\\ruby\\1.9.1",
"C:\\Program Files (x86)\\IronRuby 1.1\\Lib\\ironruby"
});
engine.SetSearchPaths(searchPaths)
यह दृष्टिकोण होस्ट मशीन IronRuby स्थापित किया है मान लिया गया है, लेकिन मैं रूबी फ़ाइलें एम्बेड करने के लिए (चाहते हैं एक मणि से) असेंबली में ताकि इसे IronRuby पूर्व-स्थापित किए बिना चलाया जा सके।
संपादित 2 (आगे अनुसंधान):
ऊपर संदर्भित irpack उपकरण के स्रोत कोड के माध्यम से पढ़ना, मुझे लगता है कि Kumaryu System.IO.Packaging.Package वर्ग के माध्यम से अंतिम सभा में संसाधनों embedding है नोटिस , और फिर msbuild को कॉल में पैकेज पास कर रहा है (https://github.com/kumaryu/irpack/blob/master/lib/irpack/packager.rb देखें)। शायद निष्पादन योग्य में पैकेजिंग फ़ाइलों में कुछ और शोध एक समाधान का कारण बन जाएगा। मुझे लगता है कि समस्या यह है कि एक मणि require
अन्य रूबी फाइलों में रूबी फाइलें ... एक असेंबली पैकेज में एक रूबी फ़ाइल require
एक ही पैकेज में अन्य रूबी फाइलें कर सकती हैं?
संपादित करें 3:
मैं अभी तक एक जवाब के लिए आगे किसी भी नहीं मिला है, लेकिन मैं किसी की प्रतिक्रियाओं का इंतज़ार है, भले ही यह सिर्फ एक लिंक या देखने के लिए जहां के बारे में एक सुझाव है दिलचस्पी होगी। मैं msbuild के लिए नया हूँ, और दस्तावेज़ीकरण बहुत भारी है। "Msbuild एम्बेड ज़िप पैकेज" के लिए प्रारंभिक वेब खोज ने कुछ भी प्रासंगिक नहीं बताया।
देखें http://blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar - मुझे कुछ ऐसी चीज बनाने में मदद चाहिए जो यह आसान है पैकेजिंग रत्न के लिए उपयोग करें। –