হ্যাঁ, আপনি একই প্রকল্পে একই কোড বেস সহ x86 এবং x64 উভয়কে লক্ষ্য করতে পারেন। সাধারণভাবে, আপনি যদি ভিএসএননেটে সঠিক সমাধান কনফিগারেশন তৈরি করেন তবে জিনিসগুলি কেবলমাত্র কাজ করবে (যদিও সম্পূর্ণরূপে পরিচালনা না করা ডিএলএলগুলিতে পি / ডাকতে সম্ভবত কিছু শর্তাধীন কোডের প্রয়োজন হবে): যে আইটেমগুলিতে আমি বিশেষ মনোযোগের প্রয়োজন বলে মনে করেছি তা হ'ল:
- একই নামের সাথে বাইরের পরিচালিত অ্যাসেমব্লিসিগুলির উল্লেখ কিন্তু তাদের নিজস্ব নির্দিষ্ট বেনিফিট (এটি সিওএম ইন্টারপ অ্যাসেমস্লিতেও প্রযোজ্য)
- এমএসআই প্যাকেজ (যা ইতিমধ্যে উল্লিখিত হয়েছে, x86 বা x64 হয় লক্ষ্যবস্তু করতে হবে)
- আপনার এমএসআই প্যাকেজে কোনও কাস্টম .NET ইনস্টলার ক্লাস-ভিত্তিক ক্রিয়া
সমাবেশের রেফারেন্স ইস্যুটি সম্পূর্ণরূপে ভিএসএনট-এর মধ্যে সমাধান করা যাবে না কারণ এটি আপনাকে কেবলমাত্র কোনও প্রকল্পের জন্য একটি প্রদত্ত নামের সাথে একটি রেফারেন্স যুক্ত করতে দেয়। এটির কাজ করার জন্য, আপনার প্রকল্পের ফাইলটি ম্যানুয়ালি সম্পাদনা করুন (ভিএস-এ, সমাধান এক্সপ্লোরারে আপনার প্রকল্পের ফাইলটি ডান ক্লিক করুন, আনলোড প্রকল্প নির্বাচন করুন, তারপরে আবার ডান ক্লিক করুন এবং সম্পাদনা নির্বাচন করুন)। কোনও সমাবেশের x86 সংস্করণে একটি উল্লেখ যুক্ত করার পরে, আপনার প্রকল্পের ফাইলে এমন কিছু থাকবে:
<Reference Include="Filename, ..., processorArchitecture=x86">
<HintPath>C:\path\to\x86\DLL</HintPath>
</Reference>
কোনও আইটেমগ্রুপ ট্যাগের মধ্যে সেই রেফারেন্স ট্যাগটি মোড়ানো করুন যা এটি প্রয়োগ করে সমাধান কনফিগারেশন নির্দেশ করে, যেমন:
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<Reference ...>....</Reference>
</ItemGroup>
তারপরে পুরো আইটেমগ্রুপ ট্যাগটি অনুলিপি করুন এবং পেস্ট করুন এবং আপনার 64৪-বিট ডিএলএল বিশদটি ধারণ করতে এটি সম্পাদনা করুন, যেমন:
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<Reference Include="Filename, ..., processorArchitecture=AMD64">
<HintPath>C:\path\to\x64\DLL</HintPath>
</Reference>
</ItemGroup>
VS.NET- এ আপনার প্রকল্পটি পুনরায় লোড করার পরে, এই পরিবর্তনগুলি দ্বারা অ্যাসেম্বলি রেফারেন্স ডায়ালগটি কিছুটা বিভ্রান্ত হবে এবং আপনার ভুল টার্গেট প্রসেসরের সাথে অ্যাসেম্বলিগুলি সম্পর্কে কিছু সতর্কতার মুখোমুখি হতে পারে তবে আপনার সমস্ত বিল্ড ঠিক ঠিক কাজ করবে।
এমএসআই সমস্যা সমাধানের কাজ শেষ, এবং দুর্ভাগ্যক্রমে এটির জন্য একটি নন-ভিএস.এনইটি সরঞ্জামের প্রয়োজন হবে : আমি সেই উদ্দেশ্যে কাফিয়নের অ্যাডভান্সড ইনস্টলারটি পছন্দ করি , কারণ এতে জড়িত বেসিক ট্রিকটি বন্ধ করে দেয় (একটি সাধারণ এমএসআই তৈরি করুন, পাশাপাশি 32-বিট এবং -৪-বিট নির্দিষ্ট এমএসআই রয়েছে এবং খুব ভালভাবে, সঠিক সংস্করণটি বের করতে এবং রানটাইমের সময় প্রয়োজনীয় ফিক্সআপগুলি করতে একটি .EXE সেটআপ লঞ্চার ব্যবহার করুন।
আপনি সম্ভবত অন্যান্য সরঞ্জামগুলি বা উইন্ডোজ ইনস্টলার এক্সএমএল (ওয়াইএক্স) টুলসেট ব্যবহার করে একই ফলাফল অর্জন করতে পারেন , তবে উন্নত ইনস্টলারটি জিনিসগুলিকে এত সহজ করে তোলে (এবং এতে যথেষ্ট সাশ্রয়ী হয়) যা আমি সত্যিই বিকল্পগুলির দিকে দেখিনি।
উন্নত ইনস্টলার ব্যবহার করার পরেও আপনার এখনও WiX এর প্রয়োজন হতে পারে এমন একটি জিনিস আপনার। নেট ইনস্টলার ক্লাস কাস্টম ক্রিয়াকলাপের জন্য। যদিও এটি নির্দিষ্ট কিছু প্ল্যাটফর্মগুলিতে (যথাক্রমে সংস্করণএনটি VersionT এবং সংস্করণ নয়, ভার্সনএনটি execution64 ব্যবহারের শর্তাদি ব্যবহার করে) চালানো উচিত তা নির্দিষ্ট করে দেওয়া তুচ্ছ, যদিও বিল্ট-ইন এআই কাস্টম ক্রিয়াকলাপগুলি 32-বিট ফ্রেমওয়ার্ক ব্যবহার করে, এমনকি 64-বিট মেশিনে কার্যকর করা হবে ।
এটি ভবিষ্যতের প্রকাশে সংশোধন করা যেতে পারে তবে আপাতত (বা একই সমস্যা থাকা আপনার এমএসআই তৈরি করতে কোনও আলাদা সরঞ্জাম ব্যবহার করার সময়) আপনি ওয়াইএক্স 3.0 এর পরিচালিত কাস্টম অ্যাকশন সমর্থনটি যথাযথ সাক্ষ্য দিয়ে ক্রিয়া ডিএলএল তৈরি করতে পারেন সংশ্লিষ্ট ফ্রেমওয়ার্ক ব্যবহার করে মৃত্যুদন্ড কার্যকর করা হবে।
সম্পাদনা: 8.1.2 সংস্করণ হিসাবে, উন্নত ইনস্টলার সঠিকভাবে 64-বিট কাস্টম ক্রিয়াকলাপ সমর্থন করে। আমার আসল উত্তরের পরে, এর দামটি কিছুটা বেড়েছে দুর্ভাগ্যক্রমে, যদিও ইনস্টলশিল্ড এবং ইলিকের তুলনায় এটি এখনও খুব ভাল মানের ...
সম্পাদনা করুন: যদি আপনার ডিএলএলগুলি জিএসি তে নিবন্ধিত হয় তবে আপনি স্ট্যান্ডার্ড রেফারেন্স ট্যাগগুলিও এইভাবে ব্যবহার করতে পারেন (উদাহরণ হিসাবে এসকিউএলাইট):
<ItemGroup Condition="'$(Platform)' == 'x86'">
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86" />
</ItemGroup>
<ItemGroup Condition="'$(Platform)' == 'x64'">
<Reference Include="System.Data.SQLite, Version=1.0.80.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64" />
</ItemGroup>
শর্তটি সমস্ত বিল্ড প্রকার, রিলিজ বা ডিবাগেও হ্রাস পেয়েছে এবং কেবল প্রসেসরের আর্কিটেকচার নির্দিষ্ট করে।