ইন্টারপ প্রকার এম্বেড করা যায় না


666

আমি সি # তে .NET 4.0 ফ্রেমওয়ার্ক (বিটা 2) এ একটি ওয়েব অ্যাপ্লিকেশন তৈরি করছি।

আমি যখন "অ্যাক্টিভহোমস্ক্রিপ্টলিব" নামে একটি সমাবেশ ব্যবহার করার চেষ্টা করি তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

ইন্টারপ টাইপ 'অ্যাক্টিভহোমস্ক্রিপ্টলিব.একটিভহোমক্লাস' এম্বেড করা যায় না। পরিবর্তে প্রযোজ্য ইন্টারফেস ব্যবহার করুন।

যখন আমি ফ্রেমওয়ার্কটি 3.5 সংস্করণে পরিবর্তন করি তখন আমার কোনও ত্রুটি নেই।

একটি ইন্টারপ প্রকার কী এবং কেন কেবল যখন আমি 4.0 ফ্রেমওয়ার্কটি ব্যবহার করি এটি ঘটে?


ইন্টারপ / পিআইএ সমস্যা সমাধানের জন্য আমি এই নিবন্ধটি খুব সহায়ক বলে মনে করেছি। ব্লগস.এমএসডিএন
বি /

উত্তর:


1066

.NET 4.0 প্রাথমিক ইন্টারপ অ্যাসেমব্লিগুলিকে (বা বরং এটির যে বিটগুলি আপনার প্রয়োজন হয়) আপনার সমাবেশে এম্বেড করার অনুমতি দেয় যাতে আপনার আবেদনের পাশাপাশি এগুলি মোতায়েনের প্রয়োজন হয় না।

যে কারণেই হোক না কেন, এই সমাবেশটি এম্বেড করা যাবে না - তবে মনে হচ্ছে এটি আপনার কোনও সমস্যা নয়। ভিজ্যুয়াল স্টুডিও ২০১০-তে সমাবেশের জন্য কেবলমাত্র প্রোপার্টি ট্যাবটি খুলুন এবং "এম্বেড ইন্টারপ প্রকারগুলি" "মিথ্যা" তে সেট করুন।

সম্পাদনা: আপনি যে ধরণের ব্যবহার করছেন তা থেকে প্রত্যয়টি সরিয়ে মাইকেল গুস্টাসের উত্তরও দেখুন Class


2
দুর্ভাগ্যক্রমে, এটি আমার যা প্রয়োজন ঠিক তা শোনায় তবে এই সম্পত্তিটি আর উপলব্ধ বলে মনে হয় না।
ডেভ

130
আমি ডান ক্লিকের পরিবর্তে প্রকল্পের সম্পত্তি পৃষ্ঠাতে খুঁজছিলাম | রেফারেন্স ফলসে প্রভাবিত ডিএলএল সম্পর্কিত সম্পত্তি।
JustSteve

5
ত্রুটিটি বলে এবং "প্রযোজ্য ইন্টারফেসটি ব্যবহার করুন" তেমন করার জন্য কি এটি আরও অর্থবোধ করে না? আমার এই ত্রুটি ছিল (একটি ভিন্ন শ্রেণি থেকে) এবং একটি ইন্টারফেস ইনস্ট্যান্ট করতে সক্ষম হয়েছিল যার ক্লাসটি তার কোক্লাস বৈশিষ্ট্য হিসাবে নির্দিষ্ট করেছে, এবং এটি কাজ করেছে। নীচে মাইকেল গুস্টাসের জবাব অনুসারে, ব্লাহক্লাসের ইন্টারফেসটিকে সবেমাত্র ব্লাহ বলা হয়েছিল, এটি মনে হয় প্রমিত সম্মেলন বলে মনে হচ্ছে।
টিম গুডম্যান

1
এম্বেডিং সম্পর্কে একটি দুর্দান্ত বিষয় হ'ল আন্তঃআপল সমাবেশটি কপিরলোকল = মিথ্যা থাকতে পারে, কারণ রানটাইমের সময় আপনার এটির প্রয়োজন নেই।
শ্মুলি

@ টিমগুডম্যান আমার জন্য "প্রযোজ্য ইন্টারফেস" কাজ করছে না, তবে উপরোক্ত embed interop typesসম্পত্তিটিকে falseকৌশলটি নির্ধারণের জন্য সেট করে। আমার ক্ষেত্রে - আমি Microsoft.Office.Interop.Excelলাইব্রেরিতে কাজ করছি এবং ওয়ার্কবুক অবজেক্টে অ্যাক্সেস করার দরকার ছিল। এটির ইন্টারফেস Workbook(বিটিডব্লিউ। নামকরণের সম্মেলন ...) ব্যবহার করা কোনও বিকল্প ছিল না - আমি পেয়েছি COM object, পছন্দসই নয়Microsoft.Office.Interop.Excel.WorkbookClass
প্রোকুরার্স

483

বেশিরভাগ ক্ষেত্রে, এই ত্রুটিটি কোডের ফলাফল যা কোনও COM অবজেক্ট ইনস্ট্যান্ট করার চেষ্টা করে। উদাহরণস্বরূপ, এখানে এক্সেল প্রারম্ভিক কোডের একটি অংশ রয়েছে:

Excel.ApplicationClass xlapp = new Excel.ApplicationClass();

সাধারণত। নেট 4 এ আপনাকে 'ক্লাস' প্রত্যয়টি সরিয়ে কোডটি সংকলন করতে হবে:

Excel.Application xlapp = new Excel.Application();

একটি এমএসডিএন ব্যাখ্যা এখানে রয়েছে


16
+1 আমি বিশ্বাস করি এটি ত্রুটি বার্তা আসলে যা করতে বলছে যখন "প্রয়োগযোগ্য ইন্টারফেসটি ব্যবহার করুন" বলে says : লক্ষ্য করুন Excel.Application একটি ইন্টারফেস (যে এটি নতুন শব্দ দিয়ে instantiated যাবে সত্ত্বেও, পরিস্থিতি অনুরূপ এখানে বর্ণিত stackoverflow.com/questions/6960910/... )
টিম গুডম্যান

"এম্বেড Interop ধরন" থেকে "false" বা "সত্য" ?
কিকিনেট

1
@ কিকিনেট যদি আপনি এখানে পরামর্শ অনুসরণ করেন তবে আপনি 'এম্বেড ইন্টারপ টাইপগুলি' সত্যে ফিরে যেতে পারেন বা কমপক্ষে আমার পক্ষে ঠিক কাজ করেছে
স্যাম হোল্ডার

122

জানের মতো এটি পেতে আমার কিছুটা সময় লেগেছে .. = S সুতরাং হতাশায় অন্ধ হয়ে থাকা অন্য যে কোনও ব্যক্তির জন্য।

  • আপনি আপনার প্রকল্পের রেফারেন্সগুলির অধীনে সমাধান এক্সপ্লোরারটিতে আপত্তিজনক সমাবেশটি রাইট ক্লিক করুন । (আমার ক্ষেত্রে ডাব্লুআইএ)
  • বৈশিষ্ট্য ক্লিক করুন।
  • এবং এম্বেড ইন্টারপ অ্যাসেম্বলির জন্য সেখানে বিকল্প থাকা উচিত
  • এটি মিথ্যাতে সেট করুন

15
এখনও বুঝতে পেরেছি যতক্ষণ না বুঝতে পেরেছেন যে আপনাকে সমাধানের এক্সপ্লোরার-এর প্রকল্পের আওতায় ইন্টারপ অ্যাসেমব্লিকে ডান-ক্লিক করতে হবে, আপনি যে সমাবেশটি তৈরি করছেন তা নয় !
স্টিভওয়িলকিনসন

2
এখন, (দশ বছর পরে) এই বিকল্পটিকে "এম্বেড ইন্টারপ প্রকারভেদ" বলা হয়
ডেভিড ফোলি 19:

36

এখানে ভিজ্যুয়াল স্টুডিও 2012 এ এম্বেড ইন্টারপ সেট করতে হবে

এখানে চিত্র বর্ণনা লিখুন


34

জনের সঠিক উত্তরটি প্রসারিত করা।

এখানে সমস্যাটি হ'ল আপনার ক্লাসের ধরণের ব্যবহারের সাথে নতুন "এম্বেড ইন্টারপ টাইপস" (বা নোপিআইএ) বৈশিষ্ট্যটি একত্রিত করা হচ্ছে। "এম্বেড ইন্টারোপ প্রকারগুলি" বৈশিষ্ট্যটি স্থায়ীভাবে পিআইএ (প্রাথমিক ইন্টারপ অ্যাসেম্বলি) থেকে সমস্ত ধরণের সাথে রেফারেন্সিং অ্যাসেমব্লিতে এটি স্থাপনের ওভারহেড অপসারণের মাধ্যমে যুক্ত করে কাজ করে।

এই বৈশিষ্ট্যটি পিআইএতে বেশিরভাগ ধরণের জন্য দুর্দান্ত কাজ করে তবে এতে কোনও বিধিনিষেধ নেই। এর মধ্যে একটি হ'ল আপনি ক্লাস এম্বেড করতে পারবেন না (এটি একটি সার্ভিসিংয়ের সমস্যা)। কেন এটি অনুমোদিত নয় তা নিয়ে মিশার একটি বিশদ ব্লগ নিবন্ধ রয়েছে


15

সমাধান পেয়েছি

রেফারেন্সগুলিতে ডান ক্লিক করে পছন্দসই dll এ ক্লিক করুন "এম্বেড ইন্টারপ টাইপস" বিকল্পটি "মিথ্যা" বা "সত্য" তে পাবেন।


1
এটি PP_COM_Wrapper ব্যবহার করে নেট ব্যবহার করে ভিএস2015 সি # এর জন্যও কাজ করেছে; দেওয়া cypress.com সরলবর্গীয় চিরহরিৎ বৃক্ষবিশেষ সেমিকন্ডাক্টর কর্পোরেশন C # এর প্রচ্ছদ উদাহরণ। মিথ্যাতে সেট করা ত্রুটি থেকে মুক্তি পেয়েছে।
ব্যবহারকারী 3564895

9

আমার স্থানীয় মেশিনে টিএফএস প্রকল্পটি টেনে আনার সময় আমি এই সমস্যার মধ্যে পড়েছিলাম। কথিত, এটি যে লোকটির মেশিনটি লিখেছিল তাতে এটি কাজ করছে। আমি কেবল এটিকে পরিবর্তন করেছি ...

WshShellClass shellClass = new WshShellClass();

এই ...

WshShell shellClass = new WshShell();

এখন, এটি চ্যাম্পের মতো কাজ করছে!


1
এই পদ্ধতিটি আমার পক্ষেও কাজ করেছিল! আমার ক্ষেত্রে, আমার প্রয়োজনীয় মানটি কোথায় ছিল তা সন্ধান করতে আমি ডিবাগ করছি, ডান-ক্লিক এবং "অনুলিপি প্রকাশ" নির্বাচন করেছি। আমাকে যা দেওয়া হয়েছিল তা হ'ল "... এইচটিএমএল ডকুমেন্টক্লাস ..." পাঠ্যটি "শ্রেণি" থেকে সরিয়ে দেওয়া আমার জন্য সমস্যাটি সমাধান করেছে।
majestzim

3

অফিস 2007 এর সাথে আমার ভিবি.এনইটি 2013 তে একই সমস্যা ছিল এবং এটি এটিকে সমাধান করেছে:

ভিএস 2013 ভিবি.এনইটি প্রকল্প> প্রপস> রেফস> মাইক্রোসফ্ট ওয়ার্ড 12.0 অবজেক্ট ল্যাব> এম্বেড ইন্টারপ প্রকারগুলি: সত্যকে মিথ্যাতে পরিবর্তন করুন


1

http://digital.ni.com/public.nsf/allkb/4EA929B78B5718238625789D0071F307

এই ত্রুটিটি ঘটে কারণ নতুন প্রকল্পে উল্লিখিত টেস্টস্ট্যান্ড এপিআই ইন্টারপ অ্যাসেম্বলির এম্বেড ইন্টারপ প্রকারের সম্পত্তিটির জন্য ডিফল্ট মানটি সত্য। এই ত্রুটিটি সমাধান করার জন্য, এই পদক্ষেপগুলি অনুসরণ করে এম্বেড ইন্টারপ টাইপ সম্পত্তিটির ভ্যালুটিকে মিথ্যাতে পরিবর্তন করুন: সলিউশন এক্সপ্লোরারে আপনার প্রকল্পের রেফারেন্স বিভাগে টেস্টস্ট্যান্ড ইন্টারপ অ্যাসেম্বলি রেফারেন্সটি নির্বাচন করুন। সম্পত্তি ব্রাউজারে এম্বেড ইন্টারোপ প্রকারের বৈশিষ্ট্যটি সন্ধান করুন এবং মানটিকে মিথ্যাতে পরিবর্তন করুন


1

ভিজ্যুয়াল স্টুডিও 2017 সংস্করণ 15.8 ভিজ্যুয়াল স্টুডিও এক্সটেনসিবিলিটি (ভিএসআইএক্স) প্রকল্পের নুগেট প্যাকেজগুলি উল্লেখ করার জন্য প্যাকেজ রেফারেন্সিয়েন্টাক্স ব্যবহার করা সম্ভব করেছে । এটি নুগেট প্যাকেজগুলির বিষয়ে যুক্তিযুক্তিকে অনেক সহজ করে তোলে এবং পুরো ভিএসএসডিকে সমেত একটি সম্পূর্ণ মেটা প্যাকেজ থাকার দরজা খুলে দেয়।

নুগেট প্যাকেজটির নীচে ইনস্টল করার ফলে সমাধান হবে নুগেট এম্বেডইন্টার্পটাইপস ইস্যু ।

ইনস্টল-প্যাকেজ মাইক্রোসফ্ট.ভিজুয়ালস্টুডিও.এসডিকে.এবেডইনটারপটাইপস

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.