রিসোর্সডোরিয়ালিটি একটি পৃথক সমাবেশে


245

আমার একাধিক পৃথক অ্যাপ্লিকেশনগুলিতে ব্যবহার করতে চাই সংস্থানীয় ফাইলগুলি (মেনুটিম্পলেট.এক্স্যামেল, বাটনটেম্পলেট.এক্স্যামেল, ইত্যাদি) রয়েছে। আমি সেগুলি অ্যাপ্লিকেশনগুলির সমাবেশগুলিতে যুক্ত করতে পারতাম, তবে যদি আমি এই সংস্থানগুলি একটি একক সমাবেশে সংকলন করি এবং আমার অ্যাপ্লিকেশনগুলিতে এটি উল্লেখ করা যায় তবে ভাল?

রিসোর্স অ্যাসেমবিলিটি তৈরি হওয়ার পরে, আমি কীভাবে এটি আমার অ্যাপ্লিকেশনগুলির অ্যাপ.এক্সএএমএল-এ উল্লেখ করতে পারি? বর্তমানে আমি পৃথক অভিধান ফাইলগুলিকে একীভূত করতে রিসোর্স অভিধানে মার্জডডিকোরিয়াম ব্যবহার করি। আমার যদি এটি একটি সমাবেশে থাকে তবে আমি কীভাবে তাদের xaml এ রেফারেন্স করতে পারি?


1
এটি ওভারকিল হতে পারে তবে আপনি এখানে বর্ণিত কৌশলটি ব্যবহার করে রফতানির জন্য আপনার সংস্থানগুলি প্রস্তুত করতে চাইতে পারেন: alexfeinberg.wordpress.com/2015/08/16/… । এটি করার প্রধান সুবিধাটি হ'ল রিসোর্স অ্যাসেমব্লির একাধিক সংস্করণ একই অ্যাপডোমনে লোড হওয়ার সমস্যাগুলি প্রতিরোধ করা।
ব্যবহারকারী 195275

উত্তর:


353

প্যাক ইউআরআই সিনট্যাক্স পরীক্ষা করে দেখুন । আপনি এই জাতীয় কিছু চান:

<ResourceDictionary Source="pack://application:,,,/YourAssembly;component/Subfolder/YourResourceFile.xaml"/>

1
আপনার অ্যাসবেশন যদি অ্যাপ্লিকেশন পাথের ভিতরে না থাকে তবে কী হবে?
সানডেভোপার

@ ইঞ্জিনিয়ার স্পোক: তারপরে সিএলআর সাহায্য ছাড়াই এটি খুঁজে পাবে না (ডাব্লুপিএফের সাথে বিশেষভাবে কিছু করার জন্য)। হয় আপনার app.config- তে প্রোবিং পাথ যুক্ত করুন বা AppDomain.AssemblyResolveএটি সমাবেশ খুঁজে পেতে সহায়তা করার জন্য সংযুক্ত করুন ।
কেন্ট বুগার্ট

1
যদি আপনার আচ্ছাদন প্রকল্পটি অ্যাপ্লিকেশন প্রকল্পের মতো একই স্তরে থাকে যা আপনার আচ্ছাদনটি উল্লেখ করার দরকার হয় তবে আমার কি পরীক্ষার পথ যুক্ত করার দরকার আছে? উদাহরণস্বরূপ, সি: olution সমাধান \ অ্যাপপ্রজেক্ট \ এবং সি: olution সমাধান \ আপনারঅ্যাসবেশনপ্রজেক্ট \
সনেডেভোপার

1
@ ইঞ্জিনিয়ারস্পক: এটি একটি পৃথক প্রশ্ন, সুতরাং দয়া করে একটি খুলুন।
কেন্ট বুগার্ট

2
এই উত্তরটি কোনও মানে করে না। এটি অনুসরণ করতে একটি ইতিমধ্যে এটি কীভাবে করা উচিত তা জানতে হবে!
ব্যবহারকারী 1040323

97

একটি উদাহরণ, কেবল এটি 15 সেকেন্ডের উত্তর তৈরি করতে -

বলুন যে আপনার কাছে একটি "ডাব্লুপিএফ" লাইব্রেরিতে "সাধারণ" রয়েছে এবং আপনি এটি আপনার মূল অ্যাপ্লিকেশন প্রকল্প থেকে ব্যবহার করতে চান:

  1. মূল প্রকল্প থেকে "সাধারণ" প্রকল্পে একটি রেফারেন্স যুক্ত করুন
  2. আপনার app.xaml এ থাকা উচিত:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Common;component/styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

চিয়ার্স


2
এবং তারপরে আপনি স্টাইলস.এক্সএএমএল সংজ্ঞায়িত সংস্থানগুলিকে ভিজ্যুয়াল স্টুডিও 2010 প্রোপার্টি উইন্ডোর মাধ্যমে কীভাবে উপলব্ধ করবেন? যদি আমি একটি উপাদান নির্বাচন করি, এবং তারপরে পটভূমির সম্পত্তিটির জন্য উত্স প্রয়োগ করুন ক্লিক করুন, এটি কেবল সিস্টেমলাইন দেখায় এবং স্টাইলস.এক্সএএমএল সংজ্ঞায়িতগুলি নয় those তবে আমি যদি এক্সএএমএলটিতে সংস্থানটির নামটি টাইপ করি তবে এটি কাজ করে, তাই এটি সঠিকভাবে উল্লেখ করা হয়।
xr280xr

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

35

আমি .NET 4.5 এর সাথে কাজ করছি এবং এই কাজটি পেতে পারি না ... আমি WPF কাস্টম কন্ট্রোল লাইব্রেরি ব্যবহার করছিলাম using এটি শেষ পর্যন্ত আমার পক্ষে কাজ করেছে ...

<ResourceDictionary Source="/MyAssembly;component/mytheme.xaml" />

উত্স: http : //social.msdn.mic Microsoft.com/ Forums / en-US / wpf / thread / 11a42336-8d87-4656-91a3-275413d3cc19


16

রিসোর্স-ওনলি ডিএলএল আপনার জন্য একটি বিকল্প। তবে আপনি প্রয়োজনীয় অ্যাপ্লিকেশনগুলি সংশোধন না করে সংস্থানগুলি সংশোধন করতে না চাইলে প্রয়োজনীয় প্রয়োজন হয় না। কেবল একটি সাধারণ রিসোর্সড অভিধান ফাইলটিও একটি বিকল্প। এটি নির্ভর করে আপনি কতবার রিসোর্স এবং ইত্যাদি পরিবর্তন করেন depends

<ResourceDictionary Source="pack://application:,,,/
     <MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>

মায়া অসম্পূর্ণ - প্রসার ছাড়াই স্রেফ সমাবেশের নাম

FolderStructureInAssembly - আপনার সম্পদের folde হয়ে থাক, তবে ফোল্ডারের গঠন উল্লেখ

আপনি যখন এটি করছেন তখন সাইটঅফঅরগিন সম্পর্কেও সচেতন হওয়া ভাল।

ডাব্লুপিএফ দুটি কর্তৃপক্ষকে সমর্থন করে: অ্যাপ্লিকেশন: /// এবং সাইটফরিগিন: ///। অ্যাপ্লিকেশন: /// কর্তৃপক্ষ অ্যাপ্লিকেশন ডেটা ফাইলগুলি সনাক্ত করে যা সংকলন সময়ে পরিচিত, সংস্থান এবং সামগ্রী সামগ্রী সহ। সাইটফরিগিন: /// কর্তৃপক্ষ মূল ফাইলগুলির সাইট চিহ্নিত করে। প্রতিটি কর্তৃপক্ষের সুযোগ নিম্নলিখিত চিত্রটিতে প্রদর্শিত হয়।

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



4

এক্সএএমএল ব্যবহার:

আপনি যদি অন্য assemblyকাঠামোটি জানেন resourcesএবং সি # কোডটি চান তবে নীচের কোডটি ব্যবহার করুন:

 ResourceDictionary dictionary = new ResourceDictionary();
 dictionary.Source = new Uri("pack://application:,,,/WpfControlLibrary1;Component/RD1.xaml", UriKind.Absolute);
 foreach (var item in dictionary.Values)
 {
    //operations
 }

আউটপুট: আমরা ব্যবহার করতে চান তাহলে ResourceDictionary RD1.xamlপ্রকল্পের WpfControlLibrary1মধ্যে StackOverflowAppপ্রকল্পের।

প্রকল্পের কাঠামো :

প্রকল্পের কাঠামো

সংস্থান অভিধান: সংস্থান অভিধান

কোড আউটপুট:

আউটপুট

PS: সমস্ত ResourceDictionaryফাইলের Build Action' Resource' বা ' Page' হিসাবে থাকা উচিত ।

সি # ব্যবহার করে:

যদি কেউ বিশুদ্ধভাবে সি # কোডে সমাধান চান তবে আমার এই সমাধানটি দেখুন।

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