विंडो रहित ActiveX नियंत्रण 64 बिट विज़िओ - 64 बिट, सक्रिय x, visio पर अपवाद समर्थित नहीं हैं

मैं अपनी संगतता बढ़ा रहा हूंVisio 32-बिट से Visio 64 बिट के लिए आवेदन। मैं win7 (64) मशीन पर Visio 2013 का उपयोग कर रहा हूँ। मैं खिड़की रहित ActiveX नियंत्रण का अपवाद प्राप्त कर रहा हूं समर्थित नहीं है। मैंने दोनों की कोशिश की है केबी 980533 और इस स्थान पर 64-बिट सिस्टम के लिए समाधान बनाने के लिए वीसी एसडीके के साथ प्रदान की गई रीडमी नमूना फ़ाइल वीएसएसडी नमूने रीडेमे नमूने 64 बिट.htm। मैंने डीईपी समाधान की कोशिश की है लेकिन काम नहीं कर रहा है।

स्टैक ट्रेस:

   at System.Windows.Forms.AxHost.EnsureWindowPresent()
at System.Windows.Forms.AxHost.InPlaceActivate()
at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
at System.Windows.Forms.AxHost.CreateHandle()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.AxHost.EndInit()

{"एक्सड्रॉइंग कंट्रोल" नियंत्रण के लिए विंडो हैंडल प्राप्त करने में असमर्थ। विंडोलेस ActiveX नियंत्रण समर्थित नहीं हैं। "}

व्यवस्था की सूचना:

ओएस: विंडोज 7 64 बिट Visio:Visio 2013 64 बिट लक्ष्य प्लेटफ़ॉर्म: .NET 4.5, कोई भी CPU इंटरऑप: एक्स इंटरपॉप। माइक्रोसॉफ्ट.ऑफिस.विसोऑक्स डीएलएल (32 बिट मशीन पर बनाया गया) Visio Drawing Control: VISOCX.DLL 64 बिट (हाँ, यह पंजीकृत है) आईडीई: विजुअल स्टूडियो 2013 प्रोफेशनल

उत्तर:

जवाब के लिए 2 № 1

अंत में मुझे 64-बिट का उपयोग करके काम करने का हमारा समाधान मिला।

जादू था कि मुझे एहसास हुआ कि मैंने नहीं कियावास्तव में XAML में नियंत्रण की आवश्यकता है; तो मैं जो कर रहा हूं वह एक्सएएमएल पेज से नियंत्रण हटा रहा था, और इसे .xaml.cs कोड के निर्माता से तुरंत चालू कर रहा था।

तो: निर्देशों का पालन करें यह लिंक एक कस्टम नियंत्रण बनाने के लिए। मैं सोच आपको MSBuild.exe के 64-बिट संस्करण का उपयोग करके नोट करना होगा जैसा कि नोट किया गया है आपके द्वारा प्रदान किया गया लिंक। यह स्पष्ट रूप से केवल तभी जरूरी है जब आप होंकस्टम नियंत्रण बनाना; मैं सीधे वीएस से समाधान का निर्माण करने में सक्षम था (लेकिन एमएसबिल्ड द्वारा निर्मित किए जाने पर यह सही तरीके से काम करता था, इसलिए यह स्वचालित बिल्डों में भी काम करता है)।

एक कस्टम नियंत्रण बनाना

  1. 32-बिट Visio इंस्टॉल किए गए निर्माण वातावरण में VisioAxControl नामक एक नया कस्टम नियंत्रण प्रोजेक्ट बनाएं
  2. वीएस डिजाइनर में, Visio Drawing को खींचें / छोड़ेंWindowsFormsHost के अंदर, टूलबॉक्स से फ़ॉर्म में नियंत्रण। आपको इस नियंत्रण को टूलबॉक्स में जोड़ना होगा (टूलबॉक्स पर राइट-क्लिक करें, "आइटम चुनें ...")। इस चरण को करने से वीएस को एक नया डीएलएल बनाने के लिए (और एक संदर्भ जोड़ना) का कारण बनता है, "माइक्रोसॉफ्ट विसियो 15.0 ड्रॉइंग कंट्रोल टाइप लाइब्रेरी" टाइप एक्सएक्स माइक्रोसॉफ्ट.ऑफिस.इंटरोप.विसोऑक्स। इस डीएलएल को प्रोजेक्ट के तहत / obj / रिलीज निर्देशिका में रखा गया है, लेकिन जब आप बस संदर्भ का चयन करते हैं और "स्थानीय कॉपी करें" को "सत्य" पर सेट करते हैं तो आपके द्वारा निर्मित / बिन पर प्रतिलिपि बनाई जाएगी।
  3. कोड-पीछे खोलें और नियंत्रण के दायरे को बदलें public और रिफैक्टर: इसे नाम दें axDrawingControl1 सेवा मेरे AxVisioControl (सबसे महत्वपूर्ण बात यह है कि मत भूलना this.AxVisioControl.Name = "AxVisioControl";)
  4. अंतिम x86 / 32-बिट समाधान निर्माण के लिए WPF नियंत्रण DLL बनाने के लिए प्रोजेक्ट बनाएं
  5. अपने x86 / 32-बिट समाधान के लिए, कॉपी और संदर्भ दोनों VisioAxControl.dll तथा AxMicrosoft.Office.Interop.VisOcx.dll समाधान में कहीं फ़ोल्डर में।

    64-बिट नियंत्रण का निर्माण

  6. 64-बिट Visio इंस्टॉल किए गए निर्माण वातावरण में कस्टम नियंत्रण प्रोजेक्ट को सहेजें, कॉपी करें / ले जाएं और खोलें

  7. बिल्ड प्लेटफॉर्म को x64 में बदलें
  8. एक व्यवस्थापक कमांड प्रॉम्प्ट खोलें, सीडी अपनी परियोजना निर्देशिका में
  9. रन MSBuild_PathMSBuild.exe /p:Configuration=Release /p:Platform=x64 your_project_file_name (मेरे लिए, MSBuild_Path सी है: WindowsMicrosoft.NETFramework64v4.0.30319MSBuild.exe) अंतिम x64 समाधान निर्माण में उपयोग के लिए WPF नियंत्रण DLL बनाने के लिए कस्टम नियंत्रण प्रोजेक्ट बनाने के लिए

आपके 64-बिट प्रोजेक्ट सहित

  1. कॉपी और संदर्भ /bin/Release/VisioAxControl.dll तथा /obj/Release/AxMicrosoft.Office.Interop.VisOcx.dll
  2. अपने फॉर्म के एक्सएएमएल में, एक जोड़ें <WindowsFormsHost name="MyWindowsFormsHost"></WindowsFormsHost> नियंत्रण।
  3. एक्सएएमएल के कोड-बैक में, कन्स्ट्रक्टर में:

    using VisioAxControl;
    public DesignView()
    {
    InitializeComponent();
    var avc = new VisioAxControl() { Name = "vControl" };
    this.MyWindowsFormsHost.Child = avc;
    this._avc = avc.AxVisioControl;  // for later reference, such as adding shapes
    }
    
  4. अपनी परियोजना को सहेजें और बनाएं!

संबंधित सवाल
सबसे लोकप्रिय