2009-06-12 10 views
11

यदि मेरे पास .NET ऐप संकलित "कोई भी CPU" है, तो यह 64 बिट ओएस पर 64 बिट मोड में चलाएगा।64 बिट ओएस पर 32 बिट मोड में चलाने के लिए "कोई भी CPU" संकलित ऐप को मजबूर करने का कोई तरीका है?

लेकिन यदि मैं, किसी भी कारण से, इस ऐप को 32 बिट मोड में चलाने के लिए मजबूर करना चाहता हूं। (जैसे कि इसे "x86" का उपयोग करके संकलित किया गया था)। Recompiling एक विकल्प नहीं है, तो क्या रन रन पर कॉन्फ़िगर करना संभव है? शायद .manifest फ़ाइल के साथ?

उत्तर

10

मेरा मानना ​​है कि आप CorFlags.exe

कुछ तरह के साथ ऐसा कर सकते हैं:
CorFlags yourassembly.exe/32bit +

ध्यान दें कि यदि विधानसभा मजबूत नामित है आप भी/बल विकल्प का उपयोग करना होगा जो मजबूत नामकरण तोड़ता है, तो आपको असेंबली से इस्तीफा देना होगा।

+0

ठीक है, दुर्भाग्य से यह संभव नहीं है। प्रश्न में ऐप मजबूत उपयोगकर्ताओं और उपभोक्ताओं को वितरित किया गया है, और फिर से हस्ताक्षर करना वास्तव में एक विकल्प नहीं है। बहुत बुरा। –

+1

आप एक निर्दिष्ट असेंबली के लिए मजबूत नाम सत्यापन छोड़ने के लिए सीएलआर सेट कर सकते हैं। "Sn.exe -Vr असेंबलीनाम" का उपयोग करना (-व्यू पुनः सक्षम करने के लिए)। जाहिर है, इसे ग्राहकों की मशीन पर चलाना होगा। मैं वास्तव में इसकी अनुशंसा नहीं करता हालांकि यद्यपि मजबूत नाम सत्यापन को अक्षम करने से सीएलआर में सुरक्षा छेद को मूल रूप से पेंच किया जाता है, किसी भी असेंबली को आपके ऐप पर कॉपी किया जा सकता है और पूर्ण ट्रस्ट स्वचालित रूप से प्राप्त होगा (देखें: http://msdn.microsoft.com/en -US/पुस्तकालय/k5b5tt23.aspx)। मेरी सिफारिश इस के साथ गड़बड़ नहीं है, फिर से संकलन करने का तरीका ढूंढें, या ऐसा न करें। –

+0

@ सिमन पी। स्टेवेन्स, मैं सभी बिंदुओं पर आपसे सहमत हूं। मेरी आशा थी कि यह मैनिफेस्ट फ़ाइल में एक प्रविष्टि हो सकती है जिसे मैं वितरित कर सकता हूं। लेकिन ऐसा लगता है कि मामला नहीं है। –