নেট .৪.৪.২ এ সমাধানে সমস্ত প্রকল্প পুনরুদ্ধার করা হচ্ছে


98

আমার এতে ভিজুয়াল স্টুডিও 2012-তে একটি সমাধান রয়েছে যাতে এটিতে 170 সি # প্রকল্প রয়েছে। নেট। ফ্রেমওয়ার্ক ৪.৪ থেকে ৪.৪.২ পর্যন্ত সমস্ত প্রকল্পের পুনঃনির্ধারণ করা দরকার।

আমি প্রতিটি প্রকল্পের বৈশিষ্ট্যগুলিতে গিয়ে, লক্ষ্যযুক্ত কাঠামোটি পরিবর্তন করে এবং ভিজুয়াল স্টুডিওটিকে .csproj ফাইলগুলিতে কোনও প্রয়োজনীয় পরিবর্তন করতে দিয়ে ভিজ্যুয়াল স্টুডিওগুলিকে এটি পরিচালনা করতে পছন্দ করি।

আমি লক্ষ্য করেছি যে এই পরিবর্তনগুলি বর্তমান প্রকল্পের কয়েকটি বৈশিষ্ট্যের উপর নির্ভর করে .csproj- এ কয়েকটি নতুন এক্সএমএল ট্যাগ যুক্ত করে।

লক্ষ্যযুক্ত সংস্করণ নম্বরটি প্রতিস্থাপনের জন্য প্রতিস্থাপন পাঠ্য সরঞ্জামটি ব্যবহার না করে আমি কীভাবে সমস্ত 170 সি # প্রকল্পে ব্যাচ করতে পারি? আমি চাই ভিজ্যুয়াল স্টুডিওতে সমস্ত প্রয়োজনীয় ট্যাগ পরিবর্তন এবং সংযোজন করা এবং একা প্রতিস্থাপন এটি করার অনুমতি দেবে না।


আমি স্বয়ংক্রিয়ভাবে এটি করার কোনও উপায় জানি না .. আমার মনে হয় আপনার সেরা বাজিটি একটি স্ট্যান্ডার্ড উইন্ডোজ ম্যাক্রো রেকর্ডার হতে পারে, যা আপনি কীবোর্ড কমান্ড ব্যবহার করেন .. তবে, আমি এইগুলিকে ব্যাচ করার চেষ্টা না করে একবারে এটি সম্পাদন করব I একসাথে যেহেতু সমস্ত ক্ষেত্রে ভিএস এর কাজটি সম্পন্ন করার পরে এটি সনাক্ত করা কঠিন হতে পারে।
এরিক ফানকেনবাশ

4
না, আপনার এটি করা উচিত নয়। বিশেষত ৪.৪.২ নয়, এর কোনও কার্যকর নতুন প্রকার নেই এবং ভবিষ্যতে বহু-লক্ষ্যবস্তু প্যাকগুলি আচ্ছাদিত হওয়ার সম্ভাবনা নেই। ঠিক যেমন 4.0x ছিল না। এই কি এক একটি সময় এবং শুধুমাত্র বেশী করে যা তাদের দরকার এ প্রকল্প। আপনি প্রকৃতপক্ষে একটি নতুন রেফারেন্স অ্যাসেমব্লী যুক্ত করতে এবং সেগুলি ব্যবহারের জন্য কোডটি সংশোধন করতে চান। আপনি যদি এই পরামর্শটিকে উপেক্ষা করতে চান তবে আপনি সম্ভবত তা করতে পারেন, তবে * .csproj ফাইলগুলিতে টার্গেটফ্রেমওয়ার্ক ভার্সন উপাদানটি প্রতিস্থাপন করতে ফাইলগুলিতে সম্পাদনা> সন্ধান করুন এবং প্রতিস্থাপন> প্রতিস্থাপন ব্যবহার করুন। আপনার উত্স নিয়ন্ত্রণ শক্ত কিনা তা নিশ্চিত করুন।
হ্যানস প্যাস্যান্ট

4
@ હંসপাস্যান্ট আপনার সন্ধান / প্রতিস্থাপনের সমাধানটি আমার প্রশ্ন অনুসারে ঠিক তেমন করতে চাইনি। আমার আরও দৃust় সমাধান দরকার।
কাইল ভি।

@ গ্রান্ট উইনি আই / জানি / এটি কাজ করবে না কারণ আমি ইতিমধ্যে সন্ধান / প্রতিস্থাপনের চেষ্টা করেছি এবং যদি আপনি এই পদ্ধতিটি ব্যবহার করেন তবে ভিজুয়াল স্টুডিওতে যে অতিরিক্ত .csproj পরিবর্তনগুলি করা হত তা প্রয়োগ করা হয় না।
কাইল ভি।

4
@ গ্রান্ট উইনই টার্গেট ফ্রেমওয়ার্ক মাইগ্রেটার এক্সটেনশানটি আমি যা চেয়েছিলাম ঠিক তেমন করে। আপনি যদি উত্তর তৈরি করতে পারেন তবে আমি এটি সঠিক চিহ্নিত করব। ধন্যবাদ!
কাইল ভি।

উত্তর:


85

এমএসডিএন ডকুমেন্টেশন " .NET ফ্রেমওয়ার্ক ৪.৫-তে মাইগ্রেশন গাইড " এবং " সমর্থন করার জন্য একটি অ্যাপ্লিকেশন কীভাবে কনফিগার করতে হয়। নেট ফ্রেমওয়ার্ক 4 বা 4.5 " কেবলমাত্র সংশোধনকারী প্রকল্পগুলি নিয়ে আলোচনা করে। একবারে পুরো সমাধানটিতে পরিবর্তনগুলি প্রয়োগ করার বিষয়ে কোনও বিবরণ নেই, বা ভিএস-তে এমন কোনও ফাংশনও দেখিনি যা এটি সমর্থন করে।

তবে, ভিজ্যুয়াল স্টুডিও গ্যালারীটিতে টার্গেট ফ্রেমওয়ার্ক মাইগ্রেটর নামে একটি (ভাল-রেটেড) এক্সটেনশন উপলব্ধ রয়েছে যা 4.5.4 (পাশাপাশি নতুন সংস্করণে **) আপগ্রেড করতে সহায়তা করে এবং দেখে মনে হচ্ছে এটি আপনার ইচ্ছা মতো ঠিক করবে। আপনি যদি আগ্রহী হন তবে উত্স কোডটি গিটহাবটিতে উপলব্ধ ।

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

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


বছরের পর বছর ধরে এটির কোনও উন্নতি হয়নি, এবং স্পষ্টতই বিকাশকারীটির লাঠিটি অন্য কারও কাছে দেওয়ার কোনও পরিকল্পনা নেই।

আপনি যদি এটি একটি নতুন। নেট ফ্রেমওয়ার্ক সংস্করণ দিয়ে কাজ করতে অক্ষম হন তবে সংশোধনগুলির জন্য বিদ্যমান পিআর এবং সমস্যাগুলি পরীক্ষা করুন , তবে আপনাকে সেগুলি নিজেই প্রয়োগ করতে হতে পারে। উদাহরণস্বরূপ, কেউ। নেট ফ্রেমওয়ার্ক v 4.7.1 এর জন্য একটি ফিক্স পোস্ট করেছেন । আশা করি এগুলি একীভূত হয়ে যাবে তবে আমি আমার নিশ্বাস ফেলব না।

আনাসের মত একই ত্রুটি অন্য কেউ যদি দেখছে (মন্তব্যে), এখানে কয়েক সপ্তাহ আগে একটি গিটহাব ইস্যু এবং 2017 এর অন্য একটি সম্ভবত সম্পর্কিত সমস্যা রয়েছে th তবে আপনাকে একই সমস্যা থাকলে থাম্বগুলি চূড়ান্ত করা এবং আরও বিশদ যুক্ত করা বিবেচনা করুন ।


7
"টার্গেট ফ্রেমওয়ার্ক মাইগ্রেশন" সরঞ্জামটি সর্বশেষ ভিএস 2017 আপডেট 15.5.5, "অবৈধ পরামিতি" ব্যর্থ হচ্ছে
আনাস ঘনেম

4
আজ VS2017 15.7 থেকে ফ্রেমওয়ার্ক 4.7
টড

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

4
@ গ্রান্ট আমি বিদ্যমান ইস্যুতে একটি মন্তব্য যুক্ত করেছি। আমি প্রকৃতপক্ষে একটি সন্ধান / সেড অনুসন্ধান এবং প্রকল্প এবং কনফিগার ফাইলগুলিতে প্রতিস্থাপনের কাজটি করেছি।
জেবি। মনিকার সাথে।

4
বিকাশকারী ডিসেম্বর 2019 এ ব্যাটনটি পাস করেছে, আপনি নিজের (ভাল) উত্তরটি আবার সম্পাদনা করতে পারেন :)
লুডোভিচ ফেল্টজ

13

নেট ফ্রেমওয়ার্ক সমাধানের জন্য, একটি সাধারণ " ফাইলগুলিতে প্রতিস্থাপন " আমার জন্য কৌশলটি করেছে:

যেমন : থেকে নেট ফ্রেমওয়ার্ক ৪.৫.২ থেকে। নেট ফ্রেমওয়ার্ক ৪.7.২

ভিতরে package.config ফাইল, সমস্ত প্রতিস্থাপন

targetFramework="net452" 

প্রতি

targetFramework="net472" 

ইন * .csproj ফাইল, সমস্ত প্রতিস্থাপন

<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> 

প্রতি

<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>

4
ভিএস 2019 এ, "সমস্ত প্রতিস্থাপন করুন" বেশ কার্যকর হয় না। আপনাকে বারবার "পরবর্তী সন্ধান করুন" ব্যবহার করতে হবে। এটি আমার মাইক্রোসফ্ট ভিত্তিক সর্বশেষ উন্নয়ন প্রকল্প। আমি ম্যাকোএসএক্সে চলে যাচ্ছি যেখানে তাদের পণ্যগুলিতে ধারাবাহিকতা এবং কিউএর একটি শালীন স্তর রয়েছে।
এটিএম_দেভ

4
প্যাকেজস.কনফিগ-এ টার্গেটফ্রেমওয়ার্ক পরিবর্তন করা সেই কাঠামোর জন্য প্যাকেজটি পুনরায় ইনস্টল করে না, তাই আপনি এখনও ভুল সংস্করণ দিয়ে শেষ করতে পারেন। আপনাকে প্যাকেজটি পুনরায় ইনস্টল করতে হবে, বা কমপক্ষে আপনার প্যাকেজ ফোল্ডারটি মুছতে হবে এবং প্যাকেজের সঠিক সংস্করণটি পুনরুদ্ধার করতে হবে। সমস্যাটি সেই পুরানো প্যাকেজগুলি.কনফিগ মডেলটির সাথে, পুনরায় ইনস্টল না করেই, আপনি প্যাকেজের জন্য রেফারেন্সের প্যাকেজের ভুল সাব ডাইরেক্টরিতে ভুল dll টার্গেট করবেন।
ট্রায়ঙ্কো

4
বাহ, ছুটির পরে আবার এই প্রশ্নের ডানদিকে ফিরে এসেছিল এবং হাহাহ, এই একই উত্তর সম্পর্কে মন্তব্য করার প্রয়োজন দেখেছিল। আমি যুক্ত করব যে * .csproj এবং প্যাকেজস কোডফাইগ ফাইলগুলি কেবল লক্ষ্য কাঠামোর রেফারেন্স দেয় না। ওয়েব বিভাগে বিভিন্ন বিভাগে ফাইলগুলি রেফারেন্স রয়েছে। উদাহরণস্বরূপ, system.web এর অধীনে, সংকলন এবং httpRunটাইম ট্যাগগুলির একটি লক্ষ্য ফ্রেমওয়ার্ক বৈশিষ্ট্য রয়েছে যা আপডেট হওয়া দরকার that সুতরাং, এই 'সন্ধান করুন এবং প্রতিস্থাপন করুন' ম্যানুয়াল প্রক্রিয়াটি একটি সত্যই ভয়ানক ধারণা বলে মনে হচ্ছে যা আপনার প্রকল্পগুলিকে বেমানান এবং দুর্নীতিগ্রস্থ অবস্থায় ফেলে দিতে পারে।
ট্রায়ঙ্কো

10

যেহেতু টার্গেট ফ্রেমওয়ার্ক মাইগ্রেটারটি ভেঙে গেছে, আমি আমার নিজস্ব অনুসন্ধান / প্রতিস্থাপন ঘটিয়েছি (গিট ব্যাশ ব্যবহার করে এটি উইন্ডোতে ঠিক কাজ করে); মূলত এটি v4.6.x কে v4.7.2 এ পরিবর্তন করে , তারপরে এটি কুখ্যাত ডসের সিআরএলএফ ব্যবহার করে ফাইলগুলিকে ফিরিয়ে দেয়:

find . \( -iname '*.csproj' -o -iname '*.vcxproj' -o -iname 'app.config' \) \
 -exec grep -Z -l 'v4\.6\..' \{} \; | xargs -0 sed -i 's/v4\.6\../v4.7.2/'  
find . \( -iname '*.csproj' -o -iname '*.vcxproj' -o -iname 'app.config' \) \
 -exec grep -Z -l 'v4\.7\..' \{} \; | xargs -0 unix2dos

4
আমি এটি খুঁজে পেয়েছি এবং তারপরে একটি Update-Package -ReInstallআশ্চর্য কাজ করব। ধন্যবাদ!
Askrich

4
এটি আমার জন্য পুরোপুরি সূক্ষ্ম কাজ করেছে। এই সমাধানের জন্য আপনাকে ধন্যবাদ
মেরিয়াম

একটি PowerShell সংস্করণ দেখুন stackoverflow.com/a/2837891/463425
tkerwood

7

আমি নিজে একটি সম্পূর্ণ সমাধান জন্য লক্ষ্য ফ্রেমওয়ার্ক সংস্করণ মাইগ্রেট করতে একটি সহজ টুল নির্মাণ করেছি কারণ উদ্দিষ্ট ফ্রেমওয়ার্ক Migrator এক্সটেনশন আমার GitHub সংগ্রহস্থল থেকে ভিসুয়াল স্টুডিও 2017. ডাউনলোড টুল সমর্থন করে না https://github.com/Xpitfire/TargetFrameworkMigrator

আমি জানি এটি যাওয়ার সবচেয়ে ভাল উপায় নয়, তবে এটি আমার পক্ষে কাজ করেছে এবং সম্ভবত এটি অন্য কাউকেও সহায়তা করবে।


এটি এখন নিশ্চিতভাবে করে।
জে ক্রোগান

3

লক্ষ্য ফ্রেমওয়ার্ক অভিবাসী বেশ কার্যকর। ডিফল্টরূপে, এটি v4.7 পর্যন্ত আসে। যাইহোক, v4.7.1, v4.7.2 এবং v4.8 এর জন্য সমর্থন যুক্ত করা সহজ।

সি তে ফ্রেমওয়ার্কস.এক্সএমএল ফাইলটি সন্ধান করুন: \ ব্যবহারকারীগণের ব্যবহারকারীর নাম \ \ অ্যাপডাটা \ স্থানীয় \ মাইক্রোসফ্ট \ ভিজ্যুয়ালস্টুডিও and ফোল্ডার এবং এই ফ্রেমওয়ার্ক সংস্করণগুলি যুক্ত করে সম্পাদনা করুন:

<Framework Id="262152" Name=".NETFramework,Version=v4.8"/>
<Framework Id="262663" Name=".NETFramework,Version=v4.7.2"/>
<Framework Id="262407" Name=".NETFramework,Version=v4.7.1"/>

আপনি ভিজ্যুয়াল স্টুডিও পুনরায় চালু করার পরে, আপনি নতুন সংস্করণ দেখতে পাবেন।


4
একটি কাঁটাচাম W / একটি VS2019 সামঞ্জস্যপূর্ণ রিলিজ রয়েছে যা ইতিমধ্যে github.com/Ian1971/TargetFrameworkMigrator/relayss-
স্কটএস

অনেক ধন্যবাদ! এটি একটি খুব সুন্দর এবং সহজ কাজ ছিল!
সংযুক্তি

2
public void ChangeFramework() {

  //Add Reference to envdte (Assemblies\Extensions\envDTE)
  string SolutionFile = @"C:\MyProject\MyProject.sln";
  string ProjectName = "MyProject";

  //------------------------------------------------------------------------
  //Find the Program ID from the registry for VisualStudio.DTE
  //Look it up In Registry: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes
  System.Type oType = System.Type.GetTypeFromProgID("VisualStudio.DTE", true);
  EnvDTE.DTE dte = (EnvDTE.DTE)Activator.CreateInstance(oType, true);

  //------------------------------------------------------------------------
  //Open your Solution
  dte.Solution.Open(SolutionFile);

  //------------------------------------------------------------------------
  //Now In your solution go through what is listed in dte.Solution.Projects 
  //and find the one that match what you want to change target for
  int iItemsCount = dte.Solution.Projects.Count;
  string sCurrent = "";

  for (int i = 1; i <= iItemsCount; i++) {

    sCurrent = dte.Solution.Projects.Item(i).Name;

    if (dte.Solution.Projects.Item(i).Name == ProjectName) {
      //Once you find your project, Change the Framework
      EnvDTE.Project oProject = dte.Solution.Projects.Item(i);
      oProject.Properties.Item("TargetFrameworkMoniker").Value = ".NETFramework,Version = v4.6.2";
    }
  }

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