visual studio - নিউগেট প্যাকেজগুলি অনুপস্থিত




visual-studio nuget (20)

আমি এই সমস্যাটি অনুসন্ধান করেছিলাম তবে সমাধানগুলির কোনওটিরই কাজ হয়নি। আমার কাছে ভিজ্যুয়াল স্টুডিও পেশাদার 2015 ইনস্টল করা আছে এবং আমি টিএফএস ব্যবহার করছি। আমার নিউগেট সংস্করণটি 3.1.6। এই সমস্যাটি কেবলমাত্র আমার সি # ওয়েব এপিআই / এমভিসি প্রকল্পে ঘটছে।

আমি নীচের ত্রুটি পাচ্ছি:

এই প্রকল্পটি এই কম্পিউটারে অনুপস্থিত নুগেট প্যাকেজগুলির উল্লেখ করে। সেগুলি ডাউনলোড করতে নিউগেট প্যাকেজ রিস্টোরটি ব্যবহার করুন। আরও তথ্যের জন্য, http://go.microsoft.com/fwlink/?LinkID=322105 । অনুপস্থিত ফাইলটি হ'ল .. \ প্যাকেজগুলি \ মাইক্রোসফট.নেট.কম্পাইলার্স ১.০.০ \ বিল্ড \ মাইক্রোসফট. নেট.কম্পিলার.পড়ল

  1. আমার সমাধানগুলিতে আমার .nuget ফোল্ডার নেই।
  2. সমাধানটিতে আমার একটি প্যাকেজ ফোল্ডার রয়েছে এবং আমি এটি মুছে ফেললে মনে হয় নুগেট নির্ভরতা পুনর্নির্মাণ করে তবে প্রকল্পটিতে এখনও উপরের ত্রুটি রয়েছে।
  3. আমি প্রকল্পটি টিএফএস থেকে অপসারণ করার চেষ্টা করেছি এবং এটি ঠিক করে নি।
  4. উপরের ত্রুটিটির পাশাপাশি, প্রকল্পের সমস্ত উল্লেখগুলিতে হলুদ সতর্কতা চিহ্ন রয়েছে এবং তারা নিখোঁজ রয়েছে বলে।
  5. আমি যখন প্রকল্পটির জন্য নুগেট প্যাকেজ ম্যানেজারটি পরীক্ষা করেছিলাম, মাইক্রোসফট. নেট.কম্পেলারগুলি সহ, "অনুপস্থিত" থাকা সমস্ত কিছুর পাশে একটি সবুজ রঙের টিক রয়েছে।
  6. আমি একটি নতুন ওয়েব এপিআই / এমভিসি প্রকল্প যুক্ত করার চেষ্টা করেছি এবং এটি একই ধরণের সমস্যার মুখোমুখি হয়েছে যেখানে বেশিরভাগ রেফারেন্স যেমন ওউইন হলুদ সতর্কতা চিহ্নের সাথে "নিখোঁজ" ছিল।

.Csproj ফাইল থেকে নিম্নলিখিত কোডটি সরিয়ে আমি এই সমস্যাটি সমাধান করেছি

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
  <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets'))" />


2 টি উত্তরের সংমিশ্রণটি আমার পক্ষে কাজ করেছিল। প্রথমে আমি 1.0.0 সংস্করণে রেফারেন্স সরিয়ে নিতে .csproj ফাইলটি সংশোধন করেছি

< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >

  ----Error---

< /Target>

এবং তারপর করেছে

Update-Package -Reinstall

থেকে এবং এটি কাজ করে।


আপনি প্রস্তাবিত ত্রুটি বার্তাটি একটি ইঙ্গিত হিসাবেও ব্যবহার করতে পারেন। এখানে কীভাবে সমাধানের জন্য প্যাকেজগুলি পরিচালনা করুন তা আবিষ্কার করুন এবং নিখোঁজ নুগেট প্যাকেজটি ক্লিক করুন।

এটাই


আমার আজ একই ত্রুটি (ঠিক একই প্যাকেজটি অনুপস্থিত) ছিল। আমি একটি এমভিসি + ওয়েব এপিআই প্রকল্পও তৈরি করেছি।

এটি সুখী হয়েছে কারণ আমি অ্যাপ্লিকেশন ফাইলগুলি (.csproj সহ) ফাইলটিকে অন্য জায়গায় সরিয়েছি। আমি ম্যানুয়ালি .sln ফাইল আপডেট করেছি তবে সমস্ত প্যাকেজ নির্ভরতা এখন (ভিজ্যুয়াল স্টুডিও 2015) .csproj ফাইলে সঞ্চিত।

.Csproj ফাইলটি সম্পাদনা করা এবং সমাধান ফোল্ডারের (যার মধ্যে প্যাকেজ ফোল্ডার রয়েছে) সম্পর্কিত আপেক্ষিক পথটি সংশোধন করা আমার জন্য সমস্যার সমাধান করেছে।


আমার একই সমস্যা ছিল, এটি সমাধান করে যে প্রকল্পগুলির আমি উল্লেখ করছি তার মধ্যে একটি সমাধান ডিরেক্টরি থেকে বাইরে ছিল (এবং সেইজন্য একই '/ প্যাকেজগুলি' ফোল্ডারটি ভাগ করে নি)। আমার জন্য যে সমাধানটি কাজ করেছিল তা হ'ল রেফারেন্স প্রকল্পের সমাধানটি খুলতে এবং সেখানে এটি তৈরি করা। একবার এই প্রকল্পটি তৈরি হয়ে গেলে ত্রুটিগুলি চলে যায়।


আমার জন্য আমার gitignore ফাইলটি আমার প্যাকেজ ফোল্ডারটিকে উপেক্ষা করছে। নিম্নলিখিত gitignore লাইনটি সমস্যার কারণ হয়ে দাঁড়িয়েছিল -

**/packages/*

সরানো হয়েছে এবং এটি আমার প্যাকেজ ফোল্ডারটি পুনরুদ্ধার করেছে। আশাকরি এটি কাউকে সাহায্য করবে।


আমার জন্য সমস্যাটি হ'ল নুগেট স্বয়ংক্রিয়ভাবে প্যাকেজগুলি / প্যাকেজগুলি আপডেট করতে পারে নি কারণ পুরো ফাইলের পথটি খুব বড় হবে। গভীরভাবে নেস্টেড ফোল্ডারের পরিবর্তে আমার ডকুমেন্টের কোনও ফোল্ডারে আমার সমাধানটি সরিয়ে ফিক্সড

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

এটি মাইক্রোসফ্টের ওয়েব সাইট থেকে ডাউনলোড করা একটি নমুনা এএসপি এমভিসি অ্যাপ্লিকেশনটির সমাধানের জন্য ছিল।


আমার জন্য, প্যাকেজগুলি সঠিক পথে ছিল তবে প্যাকেজ ফোল্ডারের ভিতরে বিল্ড ফোল্ডারগুলি ছিল না। আমি সহজেই সমস্ত প্যাকেজগুলি সরিয়ে দিয়েছি যা বলেছিল যে এটি অনুপস্থিত ছিল এবং সমাধানটি পুনর্নির্মাণ করেছিল এবং এটি সফলভাবে বিল্ড ফোল্ডার এবং .prop ফাইলগুলি তৈরি করে। সুতরাং ত্রুটি বার্তাগুলি আমাকে জানিয়ে যে সঠিক কিছু ছিল তা সঠিক ছিল।


আমার যে সমস্যাটি রয়েছে তা নিয়ে যে কেউ এখানে হোঁচট খেয়েছে (কিছুগুলি তবে সমস্ত বিল্ড সার্ভারে সমস্ত প্যাকেজ পুনরুদ্ধার করা হয়নি), আমার জন্য ধাঁধাটির চূড়ান্ত টুকরা আমার সমাধানের মূলটিতে একটি নুগেট.কনফিগ যুক্ত করছিল S ডেভিড এবো হিসাবে এখানে ফাইলটি ব্যাখ্যা করেছেন: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

ইবোর ব্লগ পোস্ট থেকে, আমার জন্য ফাইলের সামগ্রীগুলি সহজ simply

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

হালনাগাদ:

নুগেট এপিআই URL টি v3 এর জন্য পরিবর্তিত হয়েছে (সেপ্টেম্বর ২০১ 2016 হিসাবে বর্তমান)। https://www.nuget.org/ থেকে

<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />

আমি এই ত্রুটিটি সম্পর্কে একটি স্থিরতা পেয়েছি, আসলে আমার প্যাকেজ ফোল্ডারে এমএসটিস্ট.টেষ্টএডাপ্টার (1.3.2) এর একটি ভিন্ন সংস্করণ ছিল এবং .csproj ফাইলের রেফারেন্সগুলি এমএসটিস্ট.টেষ্টএডাপ্টার (1.1.0) এর দিকে নির্দেশ করছে। আমি সমস্ত MSTest.TestAdapter (1.1.0) কে MSTest.TestAdapter (1.3.2) এ প্রতিস্থাপন করেছি এবং এটি আমার সমস্যা সমাধান করেছে।


আমি বুঝতে পেরেছি যে এই প্রশ্নটি পুরানো, তবে আমি আজ এই একই পরিস্থিতিটির মধ্যে দৌড়েছি এবং সাম্প্রতিককালে এই সমস্যাটি খুঁজে পাওয়া যে কারও জন্য আমার 2 সেন্টে ফেলে দিতে চেয়েছি। একটি এএসপি এমভিসি প্রকল্প আমি নিজেই আমার সমাধানের একটি সাবফোল্ডারে চলে এসেছিলাম এবং তারপরে সমাধানটি সরিয়ে এবং সংযোজনে ভিজুয়াল স্টুডিও 2017 ব্যবহার করে উল্লিখিত ত্রুটিটি দিচ্ছিলাম। এমবিসি প্রকল্পের মতো একই সাবফোল্ডারটির মূলটিতে "lib" এবং "প্যাকেজগুলি" ফোল্ডারগুলি সরানো আমার সমস্যাটি স্থির করেছে।


আমি ভিএস ২০১২ ব্যবহার করছি এবং একই ত্রুটির মুখোমুখি হচ্ছি। আমি .csproj ফাইল থেকে নিম্নলিখিত টার্গেট ট্যাগটি সরিয়েছি এবং এটি কোনও ত্রুটি ছাড়াই সংকলন শুরু করে।

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  -- Error messages within Target Tag
</Target>

এখানে কয়েকটি উত্তরের প্রসারিত করতে হ্যাঁ আপনি আপনার .csproj ফাইল থেকে নিম্নলিখিত ব্লকটি সরিয়ে ফেলতে পারেন:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

এবং এটি সমস্যার সমাধান করে, তবে আমার ক্ষেত্রে, আমি লক্ষ্য করেছি যে আমার কাছে .NET.Compilers এবং .CodeDom.Povider এর সাথে বিভিন্ন সংস্করণ যুক্ত অতিরিক্ত রেফারেন্স রয়েছে:

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.0.1
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\

যখন আমার প্যাকেজগুলি কনফিগ কেবল নিম্নলিখিতগুলি উল্লেখ করেছে:

<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"

.Csproj ফাইল থেকে 1.0.0 আইটেমগুলি সরানো সমস্যার সমাধান করেছে।


এটি কারও সাহায্য করবে কিনা তা নিশ্চিত নয় তবে আমি সমাধান ফাইলটি টিএফএসে কখনও সংরক্ষণ না করেই আমার স্থানীয় মেশিন থেকে উত্স কোডটি মোছার সময় আমার এই সমস্যাটি উপস্থিত হয়েছিল। (প্রাথমিক বিকাশের সময়, আমি সলিউশন এক্সপ্লোরারে প্রোজেক্টটিতে ডান-ক্লিক এবং পরীক্ষা করে যাচ্ছিলাম, তবে সমাধানটি নিজেই যাচাই করতে ভুলে গিয়েছিলাম I) যখন আমাকে আবার এটির কাজ করার দরকার হয়েছিল, তখন টিএসএফ-এ আমার সমস্ত কিছু ছিল .csproj ফাইল, কোন .sln ফাইল। সুতরাং ভিএস-তে আমি একটি ফাইল করেছি -> উত্স নিয়ন্ত্রণ -> অ্যাডভান্সড - সার্ভার থেকে খুলুন এবং .csproj ফাইলটি খুললাম। সেখান থেকে আমি সমস্ত সংরক্ষণ করুন এবং এটি আমাকে জিজ্ঞাসা করেছিল আমি .sln ফাইলটি কোথায় সংরক্ষণ করতে চাই। আমি এই .sln ফাইলটিকে শীর্ষ স্তরের ডিরেক্টরি নয়, অন্য ফোল্ডার (অ্যাপ_ডাটা, অ্যাপ_সার্ট, ইত্যাদি) দিয়ে প্রকল্প ডিরেক্টরিতে সংরক্ষণ করছিলাম। আমি অবশেষে বুঝতে পেরেছিলাম যে প্রজেক্ট ফোল্ডার থেকে আমার .sln ফাইলটি একটি ডিরেক্টরি সংরক্ষণ করতে হবে যাতে এটি প্রকল্প ফোল্ডারের সমান স্তরে থাকে। আমার সমস্ত পাথ সমাধান হয়েছে এবং আমি আবার এটি তৈরি করতে সক্ষম হয়েছি।


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


গিট থেকে মোতায়েনের পরে আজুরের ব্যর্থ বিল্ড হিসাবে আমার এই সমস্যাটি ছিল।

আমার .gitignore build ফোল্ডারটি ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props

একবার build ফোল্ডারটি গিটের প্রতি প্রতিশ্রুতিবদ্ধ (ফোর্স) হয়ে গেলে, সমস্যাটি সমাধান হয়ে যায়।


ডিভোপস / বিল্ড ইঞ্জিনিয়ারদের জন্য, আপনি সম্ভবত এই চলমান nuget restore আক্রান্ত এসএলএন এর বিরুদ্ধে nuget restore করতে পারেন, বা আপনার যদি কোনও এসএলএন এর অভাব রয়েছে তবে আপনি প্রকল্পটি ঠিক করতে পারেন। আমাদের সমস্ত ইউডাব্লুপি প্রকল্পের সিআই / সিডি বিল্ডগুলির জন্য আমাকে এটি করতে হবে।

  1. নিশ্চিত হয়ে নিন যে ভিজুয়াল স্টুডিওতে বা স্বতন্ত্র অবস্থায় বিল্ড স্লেভে নুজেট ইনস্টল করা আছে। যদি এটি পরে থাকে তবে নিশ্চিত হয়ে নিন যে এটি রাস্তায় রয়েছে এবং পদক্ষেপ 2 এড়িয়ে যান।
  2. হয় ভিএস ডেভ সিএমডি কনসোলটি খুলুন, বা এটি ইতিমধ্যে খোলা একটিটির মাধ্যমে লোড করুন, যা আপনি নীচের নির্দেশাবলী সহ করতে পারেন:
    VS2015 call "%VS140COMNTOOLS%VsDevCmd.bat"
    অথবা
    ভিএস2017 call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
  3. call nuget restore MyStuff.SLN call nuget restore MyStuff.csproj বা এসএলএন না থাকলে call nuget restore MyStuff.csproj

ত্রুটি বার্তা সম্পূর্ণ সঠিক। আমি সমস্ত কৌশল চেষ্টা করেছিলাম এবং কেউই কাজ করে না। প্রকল্পটি (সাধারণ এমভিসি ওয়েব অ্যাপ পরীক্ষা) উইন্ডোজ 8.1 ভিএস 2015 সম্প্রদায় থেকে উইন্ডোজ 10-এ আমার নতুন পরীক্ষার বাক্সে স্থানান্তরিত করেছে ভিএস 2015 এর সর্বশেষ আপডেটগুলি প্রয়োগ হয়েছে। আমি এমনকি সংকলক প্যাকেজের কোনও নতুন সংস্করণ ইনস্টল করতে পারিনি।

Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop

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

দ্রষ্টব্য: মূল প্রকল্পটি ভিএস 2015 সালে তৈরি হয়েছিল এবং এর কোনও উত্তরাধিকার নুগেট পদ্ধতি নেই।


সমাধান যা আমার ক্ষেত্রে কাজ করে - ভিজ্যুয়াল স্টুডিও 2015 এন্টারপ্রাইস, প্রকল্প। নেট 4.6.1

  1. আপডেট 3 এ আপগ্রেড করুন
  2. ওয়েব বিকাশকারী সরঞ্জাম ইনস্টল করুন


.csproj ফাইল থেকে এই কোডটি সরিয়ে আমি আমার সমস্যার সমাধান করেছি:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>




visual-studio-2015