একই সমাধান / প্রকল্পে ভিজ্যুয়াল স্টুডিওতে 32 বিট এবং 64 বিট উভয়কে লক্ষ্য করে


111

মাল্টি-টার্গেটিংয়ের জন্য কীভাবে আমার ভিজ্যুয়াল স্টুডিও তৈরি করতে হবে সে সম্পর্কে আমার একটু দ্বিধা রয়েছে।

পটভূমি: সি #। নেট ভি 2.0 পি / সাথে তৃতীয় পক্ষের সাথে পরিচিত 32 বিট ডিএলএল, এসকিউএল কমপ্যাক্ট v3.5 এসপি 1, একটি সেটআপ প্রকল্পের সাথে। এখনই, প্ল্যাটফর্মের লক্ষ্যটি x86 এ সেট করা হয়েছে যাতে এটি উইন্ডোজ এক্স 64 এ চালানো যায়।

তৃতীয় পক্ষের সংস্থাটি তাদের ডিএলএল'র সবেমাত্র bit৪ বিট সংস্করণ প্রকাশ করেছে এবং আমি একটি উত্সর্গীকৃত bit৪ বিট প্রোগ্রাম বানাতে চাই।

এটি কিছু প্রশ্ন উত্থাপন করেছে যার উত্তর আমি এখনও পাইনি। আমি ঠিক একই কোড বেস পেতে চাই। আমাকে অবশ্যই ডিএলএল এর 32 বিট সেট বা 64 বিবিট ডিএলএল এর সাথে উল্লেখ সহ তৈরি করতে হবে। (3 য় পক্ষ এবং এসকিউএল সার্ভারের কমপ্যাক্ট)

এটি কি কনফিগারেশনের 2 টি নতুন সেট (ডিবাগ 64 এবং প্রকাশ 64) দিয়ে সমাধান করা যেতে পারে?

আমি কি 2 টি পৃথক সেটআপ প্রকল্প (স্ট্যান্ডার্ড ভিজ্যুয়াল স্টুডিও প্রকল্প, কোনও উইক্স বা অন্য কোনও ইউটিলিটি) তৈরি করব না, বা এটি কি একই .msi এর মধ্যে সমাধান করা যেতে পারে?

যে কোনও ধারণা এবং / বা সুপারিশকে স্বাগত জানানো হবে।


@ ম্যাগনাস জোহানসন: আপনার অর্ধেক লক্ষ্য অর্জনের জন্য আপনি দুটি কনফিগারেশন ব্যবহার করতে পারেন। এমএসআই কিছুটা শক্ত।
user7116

উত্তর:


83

হ্যাঁ, আপনি একই প্রকল্পে একই কোড বেস সহ 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>

শর্তটি সমস্ত বিল্ড প্রকার, রিলিজ বা ডিবাগেও হ্রাস পেয়েছে এবং কেবল প্রসেসরের আর্কিটেকচার নির্দিষ্ট করে।


ভিজ্যুয়াল স্টুডিও ২০০৮-এ, আমি দেখতে পেলাম যে <আইটেমগোষ্ঠ> গুলি নেস্ট করা যায় না। এই গোষ্ঠীটি নীচের বারে << আইটেমগ্রুপ> গুলিটিকে << রেফারেন্স> এর বাকী অংশের নীচে তৈরি করার পরে এই সমাধানটি ভাল কাজ করেছে। আমাকে x86 কেও আনিসিপিইউতে পরিবর্তন করতে হয়েছিল যা সম্ভবত আমার বিশেষ প্রকল্পের ইতিহাসের সাথে সম্পর্কিত।
অলিভার বক

উন্নত ইনস্টলারটি দেখতে দুর্দান্ত লাগছে aw
প্যাট

এটি বোবা প্রশ্ন হতে পারে তবে ফাইলটিকে ম্যানুয়ালি সম্পাদনা করার জন্য আপনি কীভাবে যাবেন?
hrh

1
ভিএস-এর মধ্যে ফাইল সম্পাদনা করতে সলিউশন এক্সপ্লোরার-এ প্রকল্পে ডান ক্লিক করুন এবং "আনলোড প্রকল্প" সন্ধান করুন। প্রকল্পটি লোড হয়ে গেলে, তার উপর আবার ডান ক্লিক করুন এবং "সম্পাদনা <প্রকল্পের ফাইলের নাম>" এ ক্লিক করুন। আপনি প্রকল্প ফাইল সম্পাদনা করার পরে, এটি সংরক্ষণ করুন এবং আবার প্রকল্প ফাইলটিতে ডান ক্লিক করুন এবং এটি লোড করুন। কোনও টাইপস বা ত্রুটি না থাকলে এটি আবার লোড হবে। যদি তা না হয় তবে ভিএস ফাইলটিতে সমস্যাটি কী তা আপনাকে বেশ কিছু বলবে। আশা করি এইটি কাজ করবে!
জন বোগম্যান

দুর্দান্ত উত্তর! ধন্যবাদ!
জন বোগম্যান

27

ধরা যাক যে আপনার উভয় প্ল্যাটফর্মের জন্যই ডিএলএল তৈরি রয়েছে এবং সেগুলি নিম্নলিখিত স্থানে রয়েছে:

C:\whatever\x86\whatever.dll
C:\whatever\x64\whatever.dll

আপনাকে কেবল এ থেকে আপনার .csproj ফাইলটি সম্পাদনা করতে হবে:

<HintPath>C:\whatever\x86\whatever.dll</HintPath>

এটি:

<HintPath>C:\whatever\$(Platform)\whatever.dll</HintPath>

এরপরে আপনার উভয় প্ল্যাটফর্মকে লক্ষ্য করে আপনার প্রকল্পটি তৈরি করতে সক্ষম হওয়া উচিত এবং এমএসবাইল্ড নির্বাচিত প্ল্যাটফর্মের জন্য সঠিক ডিরেক্টরিটি দেখতে পাবেন।


এটি উজ্জ্বল হবে যদি এটি কাজ করে তবে তা হয় না। কমপক্ষে আমার জন্য না।
জন শিহান

10
যে হওয়ার কথা না হয়: <HintPath> সি: \ যাই হোক না কেন \ $ (প্ল্যাটফর্ম) \ whatever.dll </ HintPath>
আন্দ্রিয়াস

আমার জন্য ভিজ্যুয়াল স্টুডিও ২০০ 2008 এ ঠিক আছে, তবে সাধারণ <রেফারেন্স> এর মতো বিল্ড টার্গেট ডিরেক্টরিতে স্বয়ংক্রিয়ভাবে ডিএলএল অনুলিপি করেনি। mdb এর সমাধানটি আমার পক্ষে আরও ভাল কাজ করেছে।
অলিভার বক

1

আপনার প্রশ্নের মোট উত্তরের বিষয়ে নিশ্চিত নন - তবে ভেবেছিলাম যে এসকিউএল কমপ্যাক্ট 3.5 এসপি 1 ডাউনলোড পৃষ্ঠায় আপনি এক্স 64 এর দিকে তাকিয়ে আছেন তা দেখে অতিরিক্ত তথ্য বিভাগে একটি মন্তব্য তুলে ধরব - আশা করি এটি সহায়তা করবে।

এসকিউএল সার্ভার কমপ্যাক্ট এসপি 1 এবং অতিরিক্ত -৪-বিট সংস্করণ সহায়তার পরিবর্তনের ফলে, এসকিউএল সার্ভার কমপ্যাক্ট ৩.৩-এর -২-বিট সংস্করণের কেন্দ্রীয়ভাবে ইনস্টল করা এবং মিশ্র মোড পরিবেশ এবং এসকিউএল সার্ভার কমপ্যাক্ট ৩.৫ এসপি-র 64৪-বিট সংস্করণ অন্তর্বর্তী হিসাবে উপস্থিত হতে পারে তা তৈরি করতে পারে সমস্যা। দ্বন্দ্বের সম্ভাবনা হ্রাস করতে, এবং প্ল্যাটফর্ম পরিচালিত ক্লায়েন্ট অ্যাপ্লিকেশনগুলির নিরপেক্ষ স্থাপনা সক্ষম করতে, উইন্ডোজ ইনস্টলার (এমএসআই) ফাইলটি ব্যবহার করে এসকিউএল সার্ভার কমপ্যাক্ট 3.5 এসপি 1 এর 64-বিট সংস্করণ কেন্দ্রীয়ভাবে ইনস্টল করতে এসকিউএল সার্ভারের 32-বিট সংস্করণ ইনস্টল করা প্রয়োজন কমপ্যাক্ট 3.5 এসপি 1 এমএসআই ফাইল। যে অ্যাপ্লিকেশনগুলির জন্য কেবলমাত্র দেশীয় 64৪-বিট প্রয়োজন, এসকিউএল সার্ভার কমপ্যাক্ট ৩.৫ এসপি-এর of৪-বিট সংস্করণটির ব্যক্তিগত স্থাপনা ব্যবহার করা যেতে পারে।

আমি এটি "32 বিট এসকিউএলসিএ ফাইল পাশাপাশি well৪ বিবিট ফাইল অন্তর্ভুক্ত করুন" হিসাবে পড়েছি যদি bit৪ বিট ক্লায়েন্টের জন্য বিতরণ করা হয়।

জীবনকে আমি অনুভব করি আকর্ষণীয় করে তোলে .. অবশ্যই বলতে হবে যে আমি "মাঝে মাঝে সমস্যা হিসাবে দেখা দেয়" লাইনটি পছন্দ করি ... কিছুটা মনে হচ্ছে "আপনি বিষয়গুলি কল্পনা করছেন তবে কেবল ক্ষেত্রে এটি করুন ..."


1

এক। X86 / x64 নির্ভরতা সহ নেট বিল্ড

প্ল্যাটফর্ম অনুসারে অন্য সমস্ত উত্তরগুলি আপনাকে আলাদা বিল্ড তৈরির সমাধান দেয়, আমি আপনাকে কেবল "যেকোনইসিপিইউ" কনফিগারেশন করতে এবং এমন একটি বিল্ড তৈরি করতে সহায়তা করি যা আপনার x86 এবং x64 ডলসের সাথে কাজ করে।

এর জন্য আপনাকে কিছু নদীর গভীরতানির্ণয় কোড লিখতে হবে।

রানটাইমের সময় সঠিক x86 / x64-dlls এর রেজোলিউশন

পদক্ষেপ:

  1. সিএসপিজেজে যে কোনও এসসিপিইউ ব্যবহার করুন
  2. আপনি যদি আপনার সিএসপোজগুলিতে কেবলমাত্র x86 বা x64 ডলসটি উল্লেখ করেন তবে সিদ্ধান্ত নিন। আপনি যে আর্কিটেকচার সেটিংসটি বেছে নিয়েছেন তাতে ইউনিট টেস্ট সেটিংস মানিয়ে নিন। এটি ভিজুয়ালস্টুডিওর মধ্যে পরীক্ষাগুলি ডিবাগিং / চালানোর জন্য গুরুত্বপূর্ণ।
  3. রেফারেন্স-প্রোপার্টি সেট কপি স্থানীয় & নির্দিষ্ট সংস্করণটিতে করার মিথ্যা
  4. আপনার সমস্ত csproj ফাইল যেখানে আপনি x86 / x64 রেফারেন্স করেছেন সেখানে প্রথম সম্পত্তি গ্রুপে এই লাইনটি যুক্ত করে আর্কিটেকচার সতর্কতা থেকে মুক্তি পান : <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
  5. আপনার স্টার্টআপ প্রজেক্টে এই পোস্ট বিল্ড স্ক্রিপ্ট যুক্ত করুন, এই স্ক্রিপ্টের এসপিগুলির পাথগুলি ব্যবহার করুন এবং সংশোধন করুন এটি আপনার বিল্ড বিন \ x86 \ বিন \ x64 correspond এর সংশ্লিষ্ট সাবফোল্ডারগুলিতে আপনার সমস্ত x86 / x64 ডলস অনুলিপি করে ies

    xcopy /E /H /R /Y /I /D $(SolutionDir)\YourPathToX86Dlls $(TargetDir)\x86 xcopy /E /H /R /Y /I /D $(SolutionDir)\YourPathToX64Dlls $(TargetDir)\x64

    -> আপনি এখনই আবেদন শুরু করার সময়, আপনি একটি ব্যতিক্রম পাবেন যে সমাবেশটি পাওয়া যায় নি be

  6. আপনার অ্যাপ্লিকেশন এন্ট্রি পয়েন্টের ঠিক শুরুতে অ্যাসেমব্লি রিসলভ ইভেন্টটি নিবন্ধভুক্ত করুন

    AppDomain.CurrentDomain.AssemblyResolve += TryResolveArchitectureDependency;

    এই পদ্ধতি সহ:

    /// <summary>
    /// Event Handler for AppDomain.CurrentDomain.AssemblyResolve
    /// </summary>
    /// <param name="sender">The app domain</param>
    /// <param name="resolveEventArgs">The resolve event args</param>
    /// <returns>The architecture dependent assembly</returns>
    public static Assembly TryResolveArchitectureDependency(object sender, ResolveEventArgs resolveEventArgs)
    {
        var dllName = resolveEventArgs.Name.Substring(0, resolveEventArgs.Name.IndexOf(","));
    
        var anyCpuAssemblyPath = $".\\{dllName}.dll";
    
        var architectureName = System.Environment.Is64BitProcess ? "x64" : "x86";
    
        var assemblyPath = $".\\{architectureName}\\{dllName}.dll";
    
        if (File.Exists(assemblyPath))
        {
            return Assembly.LoadFrom(assemblyPath);
        }
    
        return null;
    }
  7. আপনার যদি ইউনিট টেস্টগুলি এমন একটি পদ্ধতি দিয়ে একটি টেস্টক্লাস তৈরি করে যার একটি অ্যাসেম্বলিআইনিটায়ালাইজ এট্রিবিউট রয়েছে এবং উপরের ট্রাই রোলস আর্কিটেকচারডিপেন্ডেন্সি-হ্যান্ডলারটি এখানে নিবন্ধ করুন। (আপনি কখনও কখনও ভিজ্যুয়াল স্টুডিওর অভ্যন্তরে একক পরীক্ষা চালালে এগুলি কার্যকর করা হবে না, উল্লেখগুলি ইউনিট টেস্ট বিন থেকে নয় সমাধান করা হবে Therefore সুতরাং দ্বিতীয় পদক্ষেপের সিদ্ধান্ত গুরুত্বপূর্ণ))

উপকারিতা:

  • উভয় প্ল্যাটফর্মের জন্য একটি ইনস্টলেশন / বিল্ড

ত্রুটি: - x86 / x64 dlls না মিলে সংকলনের সময় কোনও ত্রুটি। - আপনার এখনও দুটি মোডে পরীক্ষা চালানো উচিত!

Buচ্ছিকভাবে দ্বিতীয় নির্বাহযোগ্য তৈরি করুন যা পোস্ট বিল্ড স্ক্রিপ্টে Corflags.exe এর সাথে x64 আর্কিটেকচারের জন্য একচেটিয়া

অন্যান্য বৈকল্পিকগুলি চেষ্টা করে দেখুন: - আপনি যদি নিশ্চিত করেন যে ডান ডলগুলি আপনার বাইনারি ফোল্ডারে শুরুতে অনুলিপি করা হয়েছে (প্রসেস আর্কিটেকচার মূল্যায়ন করুন -> সংশ্লিষ্ট ডিএলগুলি x64 / x86 থেকে বিন ফোল্ডারে এবং পিছনে সরান) আপনার যদি প্রয়োজন হয় তবে সমাবেশটি হ্যান্ডলারের প্রয়োজন নেই। ) - ইনস্টলারটিতে আর্কিটেকচারটি মূল্যায়ন করুন এবং ভুল স্থাপত্যের জন্য বাইনারিগুলি মুছুন এবং ডানটিকে বিন ফোল্ডারে সরান।


0

আপনার শেষ প্রশ্ন সম্পর্কে। সম্ভবত আপনি এটি একক এমএসআইয়ের মধ্যে সমাধান করতে পারবেন না। আপনি যদি রেজিস্ট্রি / সিস্টেম ফোল্ডার বা সম্পর্কিত যে কোনও কিছু ব্যবহার করে থাকেন তবে এমএসআই নিজেই এ সম্পর্কে অবগত থাকতে হবে এবং 32 বিট মেশিনে সঠিকভাবে ইনস্টল করার জন্য আপনাকে অবশ্যই একটি 64 বিট এমএসআই প্রস্তুত করতে হবে।

এমন একটি সম্ভাবনা রয়েছে যে আপনি 32 টি অ্যাপ্লিকেশন হিসাবে আপনার পণ্যটি ইনস্টল করতে পারেন এবং এখনও এটি 64 বিট ওয়ান হিসাবে চালাতে সক্ষম হতে পারেন তবে আমি মনে করি এটি অর্জন করা কিছুটা কঠিন হতে পারে।

যা বলা হচ্ছে আমি মনে করি আপনার সকল কিছুর জন্য একটি একক কোড বেস রাখতে সক্ষম হওয়া উচিত। আমার বর্তমান কাজের জায়গায় আমরা এটি করতে পেরেছি। (তবে সবকিছু একসাথে খেলতে কিছুটা জাগ্রত হয়েছিল)

আশাকরি এটা সাহায্য করবে. 32/64 বিট ইস্যু সম্পর্কিত কিছু তথ্যের লিঙ্ক এখানে পান: http://blog.typemock.com/2008/07/registry-on-windows-64-bit-double-your.html


0

আপনি যদি এমএসআই ইনস্টলারের অংশ হিসাবে .NET এ লিখিত কাস্টম অ্যাকশনগুলি ব্যবহার করেন তবে আপনার আর একটি সমস্যা আছে।

এই শুল্ক ক্রিয়াগুলি চালিত 'শিম' সর্বদা 32 বিট থাকে তবে আপনার কাস্টম অ্যাকশনটি 32 বিট চলবে, আপনি লক্ষ্য নির্ধারণ করেও।

আরও তথ্য এবং কিছু নিনজা কাছাকাছি চলে আসে (মূলত এই শিমের bit৪ বিটের সংস্করণটি ব্যবহার করতে এমএসআই পরিবর্তন করুন)

একটি শেয়ার পয়েন্ট 64 এ কাজ করতে ভিজ্যুয়াল স্টুডিও 2005/2008 এ এমএসআই তৈরি করা

ভিজ্যুয়াল স্টুডিও সহ 64-বিট পরিচালিত কাস্টম অ্যাকশনগুলি


0

আপনি দুটি সমাধান আলাদাভাবে তৈরি করতে পারেন এবং সেগুলি পরে মার্জ করতে পারেন! আমি ভিসি 2010 এর জন্য এটি করেছি এবং এটি কার্যকর হয় works আমার কাছে সিএমকে দ্বারা উত্পাদিত 2 টি আলাদা সমাধান ছিল এবং আমি সেগুলি একীভূত করেছিলাম


0

আপনি প্রকল্প ফাইলের dll রেফারেন্সের জন্য একটি আইটেমগ্রুপের একটি শর্ত ব্যবহার করতে পারেন ।
আপনি যখনই সক্রিয় কনফিগারেশন পরিবর্তন করেন তখন এটি ভিজ্যুয়াল স্টুডিওর শর্ত এবং রেফারেন্সগুলি পুনরুদ্ধার করে।
প্রতিটি কনফিগারেশনের জন্য কেবল একটি শর্ত যুক্ত করুন।

উদাহরণ:

 <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <Reference Include="DLLName">
      <HintPath>..\DLLName.dll</HintPath>
    </Reference>
    <ProjectReference Include="..\MyOtherProject.vcxproj">
      <Project>{AAAAAA-000000-BBBB-CCCC-TTTTTTTTTT}</Project>
      <Name>MyOtherProject</Name>
    </ProjectReference>
  </ItemGroup>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.