এই প্রকল্পটি এই কম্পিউটারে অনুপস্থিত নুগেট প্যাকেজগুলির উল্লেখ করে


313

আমার একটি এএসপি.নেট এমভিসি 5 অ্যাপ্লিকেশন রয়েছে যা গতকাল কাজ করেছিল এবং আমি যখন নির্মাণের চেষ্টা করছি তখন এই ত্রুটিটি পাচ্ছি:

এই প্রকল্পটি এই কম্পিউটারে অনুপস্থিত নুগেট প্যাকেজগুলির উল্লেখ করে।

আমার দুটি বিকল্প চেক করা আছে যা নুগেটকে স্বয়ংক্রিয়ভাবে ডাউনলোড এবং নিখোঁজ প্যাকেজগুলি চেক / চালু করার মঞ্জুরি দেয়। আমি প্যাকেজ ফোল্ডারে সমস্ত ফাইল মুছে ফেলার চেষ্টা করেছি এবং তারপরে আবার সেগুলি ডাউনলোড করতে পেরেছি। এছাড়াও আমি যখন নুগেট খুলি এবং আপডেটগুলি সন্ধান করি তখন এটি বলে যে এখানে ইনস্টল করার দরকার নেই। আশ্চর্যজনকভাবে বিরক্তিকর ইস্যুটি ছাড়িয়ে যাওয়ার জন্য আর কী করতে হবে তা আমি বুঝতে পারি না।


1
আমি প্রকল্পটিতে ডান ক্লিক করে এবং সেই বিকল্পটি নির্বাচন করে নুগেট রিস্টোর সক্ষম করেছি। এটি তখন সেই ফোল্ডারে একটি নুগেট ফোল্ডার এবং তিনটি আইটেম যুক্ত করেছে এবং সমস্যাটি সমাধান করার জন্য কিছুই করে না। আমি পুনর্নির্মাণের চেষ্টা করেছি এবং এখনও উপরে একই ত্রুটি পেয়েছি।
অস্টিন হ্যারিস

আপনার সমাধানে কি .nuget ফোল্ডার রয়েছে এবং আপনি নিউগেটকে সর্বশেষ সংস্করণে আপডেট করেছেন? এখানে দেখুন: স্ট্যাকওভারফ্লো.com
ডেভিড

হ্যাঁ, এটি চেষ্টা করে দেখুন এবং এটি আমার বিল্ড ত্রুটি বার্তা সমস্যার সমাধান করেনি।
অস্টিন হ্যারিস

এই ত্রুটির আরও একটি কারণ The operation has timed out.ত্রুটি। বিল্ড চলাকালীন। আপনার ভিজ্যুয়াল স্টুডিও অনলাইন বিল্ড ব্যর্থ তথ্য স্ক্রিনে আপনার বিল্ড লগ বা ডায়াগনস্টিকস ট্যাবটি পরীক্ষা করতে হবে।
জোশুয়া ড্রেক

সমাধানগুলির কোনওটিই আমার পক্ষে কাজ করে না। আমি একটি রেপো থেকে ডাউনলোড করছি এবং প্যাকেজগুলি প্রথম প্রকল্পের জন্য সঠিক ফাইল কাঠামোটিতে পুনরুদ্ধার করছি, দ্বিতীয় প্রকল্পটি তাদের খুঁজে পাবে না। .Csproj পরীক্ষা করে দেখা যাচ্ছে যে সঠিক আপেক্ষিক পথটি ব্যবহার করা হচ্ছে তাই এটি সমাধান করার চেষ্টা করার জন্য আমি একটি ক্ষতির মধ্যে আছি। github.com/DanJ210/ প্রোগ্রাম্রামারস্টেস্ট
ড্যানিয়েল জ্যাকসন

উত্তর:


463

আমার ক্ষেত্রে, আমাকে .csproj ফাইল থেকে নিম্নলিখিতগুলি সরিয়ে ফেলতে হয়েছিল:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<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>

আসলে, এই স্নিপেটে আপনি দেখতে পাচ্ছেন ত্রুটি বার্তাটি কোথা থেকে আসছে।

আমি এমএসবিল্ড-ইন্টিগ্রেটেড প্যাকেজ রিস্টোর থেকে স্বয়ংক্রিয় প্যাকেজ পুনরুদ্ধারে রূপান্তর করছিলাম ( http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore )


12
এটি আমার পক্ষে কাজ করেছিল তবে আমার কেবল <টার্গেট> </ টার্গেট> উপাদানটি অপসারণ করতে হবে। ভিএস [2013] এটিকে পুনরুদ্ধার করবে বলে মনে হচ্ছে যদি আমি <গুরুত্বপূর্ণ> উপাদানটিকেও সরিয়ে ফেলি।
রবার্ট টেলর

3
এটি মারাত্মকভাবে অবিশ্বাস্য। মাইক্রোসফ্ট সবকিছু এত কঠিন করে তোলে কেন?
ডিমিগুয়েল

10
যদি এটি অপসারণ করা যায় তবে কেন এটি প্রথম স্থানে রয়েছে?
OK999

1
ঠিক আছে 9999, এক পর্যায়ে, সমাধানটিতে ডান ক্লিক করে এবং এটি পুরানো উপায়ে সম্পন্ন "নিউগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন" নির্বাচন করে আপনি অবশ্যই ভিজ্যুয়াল স্টুডিওর আগের সংস্করণ থেকে এটি সক্ষম করে রেখেছেন। আমাদের আর দরকার নেই
লরেন পলসেন

3
আমি সমাধানগুলি পছন্দ করি যা কেবল জিনিসগুলি মুছে ফেলার সাথে জড়িত।
টড মেনিয়ার

85

একটি সমাধান হ'ল নিম্নলিখিত .csproj ফাইল থেকে অপসারণ করা হবে:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<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>

কিভাবে?

  1. প্রকল্পে রাইট ক্লিক করুন। প্রকল্পটি আনলোড করুন।
  2. প্রকল্পে রাইট ক্লিক করুন। সিএসপিজেজ সম্পাদনা করুন।
  3. ফাইলটি থেকে অংশটি সরান। সংরক্ষণ.
  4. প্রকল্পে রাইট ক্লিক করুন। পুনরায় লোড প্রকল্প।

আপনি যখন কোনও প্রকল্পকে এক জায়গা থেকে অন্য জায়গায় নিয়ে যান, এটি দুর্দান্ত কাজ করে।
ডিন সিও

4
@ ইভানসান্টিয়াগো এটি ইতিমধ্যে একই সমাধানের সাথে উত্তর দিয়েছিল! .. ভোট দিন! ..
জ্যাক

2
@ClintEastwood আমার উত্তর ব্যাখ্যা কেমন এটা করতে। এটাই পার্থক্য। কোনো ব্যবহারকারী একটি জন্য খুঁজছেন হয় তাহলে কেমন করে আমার উত্তর উপরে উত্তর বিপরীতে এটা আছে।
ইভান সান্তিয়াগো

2
@ ইভানসান্টিয়াগো আপনার থাকতে পারে: এটি একটি মন্তব্য হিসাবে যুক্ত করেছেন, বা, কীভাবে করবেন তার মূল উত্তরটি সম্পাদনা করেছেন।
কলিন

50

আমার ক্ষেত্রে এটি হয়েছিল যখন আমি আমার সলিউশন ফোল্ডারটি এক অবস্থান থেকে অন্য স্থানে নিয়ে যাওয়ার পরে এটিকে কিছুটা পুনরায় সংগঠিত করেছি এবং প্রক্রিয়াতে এর সম্পর্কিত ফোল্ডারের কাঠামো পরিবর্তিত হয়েছিল।

সুতরাং আমি আমার নীচের একটি অনুরূপ সমস্ত এন্ট্রি সম্পাদনা করতে হবে .csproj ফাইল থেকে

  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />

প্রতি

  <Import Project="packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />

(থেকে পরিবর্তন দ্রষ্টব্য ..\packages\করার packages\। এটি আপনার ক্ষেত্রে একটি ভিন্ন আপেক্ষিক গঠন হতে পারে, কিন্তু আপনি ধারণা পেতে।)


3
অনুরূপ ইস্যু .... আমি .csproj ফাইলটিকে ডিরেক্টরি কাঠামোর একটি স্তরে সরিয়ে নিয়েছিলাম এবং ".. \ .. \ প্যাকেজ \ ..." থেকে ".. \ প্যাকেজ \ ..." তে পরিবর্তন করতে হয়েছিল।
tmgirvin

2
আমার একই রকম সমস্যা ছিল, তবে সত্যিই অদ্ভুত। আমি এটি একটি সাবসুলেশন মডিউলে ব্যবহার করছি, সুতরাং এটি সমাধানে এটি ঠিক ছিল, কিন্তু যখন আমি অন্য সমাধান থেকে সেই সমাধানটি উল্লেখ করি, প্যাকেজগুলি আলাদা জায়গায় ছিল। আমি .csproj জুড়ে ... \ প্যাকেজগুলি $ (সলিউশনডির) প্যাকেজগুলিতে পরিবর্তন করেছি এবং এটি এটি স্থির করে দিয়েছে।
জোএনসিএ 21

2
আপনি যদি ম্যানুয়ালি .csproj ফাইলটি নিয়ে উপহাস না করতে চান তবে আমি খুঁজে পেয়েছি যে আপনি প্রকল্পের জন্য ইনস্টল করেছেন এমন সমস্ত নুগেট প্যাকেজগুলির একটি নোট গ্রহণ করে, সেগুলি মুছে ফেলা এবং পুনরায় ইনস্টল করা আমার জন্য এই সমস্যাটি সমাধান করেছে। আমি যখন এই সমস্যাটির দিকে দৌড়ালাম তখন একটি প্রকল্পের নিজস্ব গিট সংগ্রহস্থল রাখার সমাধান থেকে সমাধান করার চেষ্টা করছিলাম।
WiteCastle

এর অর্থ কি আপনার .csproj আপনার .sln ফাইলের সমান স্তরে রয়েছে?
সাইমন_উইভার

@ সিমন_আপনার .csprojতুলনায় আপনার আত্মীয়ের অবস্থানটি .slnএই প্রসঙ্গে কিছু যায় আসে না। আপনার গুরুত্বপূর্ণ বিষয়গুলি যা উল্লেখ করা হয় তা .csprojঅন্য কোথাও চলে গেছে কিনা । যদি তাই হয় তবে আপনার এটি ঠিক করা দরকার। যদি আপনি আপনার '.csproj' এটিকে উল্লেখ করে থাকেন এমন সবকিছু দিয়ে সরিয়ে নিয়ে থাকেন তবে .slnএটি যেখানে ছিল সেখানে রাখেন , তবে আপনাকে .slnফাইলটি .csproj-es এর নতুন অবস্থানে ফিক্স করতে হবে , তবে .csprojফাইলগুলি সম্পাদনা করার প্রয়োজন হবে না ।
নিকিতা জি।

22

আমি আমার সমাধানটিতে ডান ক্লিক করে এবং পরে নুগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন এ ক্লিক করে সহজেই এই সমস্যাটি সমাধান করি বিকল্প

(পিএস: আপনার কাছে সরঞ্জাম থেকে নুগল ইনস্টল রয়েছে তা নিশ্চিত করুন -> এক্সটেনশানস এবং আপডেট -> ভিজ্যুয়াল স্টুডিও 2013 এর জন্য নুগেট প্যাকেজ ম্যানেজার।

আশা করি এটা সাহায্য করবে.


7
এটি নুগেট প্যাকেজগুলি পুনরুদ্ধার করার পুরানো উপায় এবং এড়ানো উচিত।
মাফিন ম্যান

2
@ দ্য মফিনমান: আপনি কী দয়া করে পরিষ্কার করতে পারেন যে নতুন উপায়টি কী এবং কেন এই উপায়টি এড়ানো উচিত (বিবেচনা করে ভিএস ২০১৩ ত্রুটি আউটপুট আপনাকে ঠিক এটি করতে বলেছে)?
ক্যান্ট্রিয়ানবিয়ার

2
@ ক্যান্ট্রিয়ানবিয়ার এই পৃষ্ঠাটিতে নেভিগেট করুন docs.nuget.org/consume/package-restore এবং কল করা বিভাগটি সন্ধান করুন MSBuild-Integrated Package Restore। এটি পুরানো উপায় এবং এটি আপনাকে নতুন উপায়ে কেন ব্যবহার করা উচিত তার কয়েকটি কারণ তালিকাভুক্ত করে।
মাফিন ম্যান

এই ব্লগটিতে ডেভিড এ্যাবোর ব্লগটি দেখুন.ড্যাভিডেবোবো.কম / ২০১৪ / ২০১৮ / এখন এখন ... " নুগেট এখন ভিএস- তে বিল্ডিংয়ের আগে সর্বদা প্যাকেজগুলি পুনরুদ্ধার করে" "
টিমবি 33

17

আমার ক্ষেত্রে এটির সাথে মাইক্রোসফ্ট.বিল্ড.বিসিএল সংস্করণটি ছিল। আমার নুগেট প্যাকেজ সংস্করণটি ছিল 1.0.21, তবে আমার প্রকল্পের ফাইলগুলি এখনও 1.0.14 সংস্করণটির দিকে নির্দেশ করছে

সুতরাং আমি আমার .csproj ফাইলগুলি এ থেকে পরিবর্তন করেছি:

  <Import Project="..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
   <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
    <Error Condition="!Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="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=317567." HelpKeyword="BCLBUILD2001" />
    <Error Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
  </Target>

প্রতি:

 <Import Project="..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
    <Error Condition="!Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="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=317567." HelpKeyword="BCLBUILD2001" />
    <Error Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />

এবং বিল্ড আবার কাজ ছিল।


11

আপনি যদি টিএফএস ব্যবহার করছেন

সমাধানের ফোল্ডার থেকে NuGet.exeএবং NuGet.targetsফাইলগুলি সরান .nuget। ফাইলগুলি নিজেও সমাধানের কর্মক্ষেত্র থেকে সরানো হয়েছে তা নিশ্চিত করুন। NuGet.Configউত্স নিয়ন্ত্রণে প্যাকেজ যুক্ত করে বাইপাস চালিয়ে যেতে ফাইলটিকে পুনরায় রাখুন ।

সমাধানে প্রতিটি প্রকল্প ফাইল (যেমন .csproj, .vbproj) সম্পাদনা করুন এবং NuGet.targetsফাইলের কোনও উল্লেখ মুছে ফেলুন । আপনার পছন্দের সম্পাদকটিতে প্রকল্প ফাইল (গুলি) খুলুন এবং নিম্নলিখিত সেটিংসটি সরিয়ে ফেলুন:

<RestorePackages>true</RestorePackages>  
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  
...
<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>

আপনি যদি টিএফএস ব্যবহার না করেন

.nugetআপনার সমাধান থেকে ফোল্ডারটি সরান । নিশ্চিত করুন যে ফোল্ডারটি নিজেই সমাধান কর্মক্ষেত্র থেকে সরানো হয়েছে।

সমাধানে প্রতিটি প্রকল্প ফাইল (যেমন .csproj, .vbproj) সম্পাদনা করুন এবং NuGet.targetsফাইলের কোনও উল্লেখ মুছে ফেলুন । আপনার পছন্দের সম্পাদকটিতে প্রকল্প ফাইল (গুলি) খুলুন এবং নিম্নলিখিত সেটিংসটি সরিয়ে ফেলুন:

<RestorePackages>true</RestorePackages>  
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />  
...
<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>

উল্লেখ: স্বয়ংক্রিয় প্যাকেজ পুনরুদ্ধার ব্যবহারের জন্য এমএসবিল্ড-ইন্টিগ্রেটেড সমাধানগুলি স্থানান্তরিত হচ্ছে


8

প্যাকেজগুলি কি ভুল ফোল্ডারে পুনরুদ্ধার করা সম্ভব? সিএসপোজ ফাইলগুলির পাথগুলি সঠিক কিনা তা পরীক্ষা করে দেখুন।

যদি তারা আলাদা হয় তবে প্যাকেজগুলি এখন অন্য কোনও জায়গায় পুনরুদ্ধার করার কারণে এটি হতে পারে। এটি কোনও নুগেট.কনফিগ ফাইলের মতো নোড নির্দিষ্ট করে চেক করা হওয়ার কারণে এটি হতে পারে:

<add key="repositoryPath" value="..\..\Packages" />

প্যাকেজগুলি পুনরুদ্ধার করা হচ্ছে, প্রকল্পগুলি এখনও পুরানো অবস্থানটির দিকে তাকাচ্ছে।


1
আমি বিশ্বাস করি যেহেতু আমি ফাইলগুলির অবস্থান সরিয়ে নিয়েছি তবে এটি কোনও পথের সমস্যা হতে পারে তবে আমি কোথাও একটি শক্ত কোডড পথ নেই তা দেখতে পাচ্ছি না। আমি প্রজ ফাইলে দেখেছি এবং সমস্ত প্যাকেজ ফাইলগুলি এর মতো সম্পর্কিত বলে মনে হচ্ছে: <রেফারেন্স অন্তর্ভুক্ত = "অ্যান্ট্রাল 3. রুনটাইম, সংস্করণ = 3.5.0.2, সংস্কৃতি = নিরপেক্ষ, পাবলিক্যকিটোকেন = eb42632606e9261f, প্রসেসরআরকিটেকচার = এমএসআইএল"> <স্পেসিফিক ভার্সন> মিথ্যা </SpecificVersion> <HintPath> .. \ প্যাকেজগুলি \ Antlr.3.5.0.2 \ lib \ Antlr3.Runtime.dll </HintPath> </Rifferences>
অস্টিন হ্যারিস

এটি ওয়েবকনফিগটিতে যুক্ত করা কোনও উপকারে আসেনি: <যোগ কী = "সংগ্রহস্থলপথ" মান = ".. \ .. \ প্যাকেজগুলি" />
অস্টিন হ্যারিস

আপনি এটি ওয়েবকনফাইগটিতে যুক্ত করতে চান না। আমি নিউগেট.কনফিগ ফাইলটি উল্লেখ করছিলাম এবং আপনি আপেক্ষিক পথটি পরীক্ষা করতে চান। আপনার প্যাকেজগুলি সিএসপোজ ফাইলগুলির তুলনায় কোথায়? তারা কি .. \ প্যাকেজগুলিতে আছে? প্যাকেজগুলি সঠিকভাবে পুনরুদ্ধার করা হচ্ছে বলে মনে হচ্ছে তবে আপনার প্রকল্পগুলি ভুল জায়গায় খুঁজছে।
ইনফোজল্ট

6

আমারও একই প্রশ্ন ছিল. আমার ক্ষেত্রে মাইক্রোসফ্ট.বিসিএল.বিল্ড প্যাকেজ ইনস্টল করার ফলে সমস্যাটি স্থির হয়েছে।


এটি আমার পক্ষেও কাজ করেছিল - তবে আমার সঠিক ধারণাটি নেই যে সেই প্যাকেজটি ইনস্টল করা ছিল (যা নীচে হেনকি 14 এর সংস্করণটির উত্তর পরিবর্তন করার মত একই প্রভাব ফেলেছে বা কেবলমাত্র সে সমস্ত লক্ষ্যগুলি মুছে ফেলেছে - তারা আসলে কী কার্যকর কিছু করছে?
গাজ

ইন 1.0.21সংস্করণ প্যাকেজের মধ্যে কোন ফাইল, ইনস্টলেশন 1.0.14সংস্করণ এই স্থির করেছি।
এফএলসিএল

4

.Csproj ফাইলে লাইনের নীচে সরানো হয়েছে

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" 
Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<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>

3

একটি সমাধান হ'ল নিম্নলিখিত .csproj ফাইল থেকে অপসারণ করা হবে:

<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />

এই প্রকল্পটি এই কম্পিউটারে অনুপস্থিত নুগেট প্যাকেজগুলির উল্লেখ করে। সেগুলি ডাউনলোড করার জন্য নিউগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন। আরও তথ্যের জন্য, http://go.microsoft.com/fwlink/?LinkID=322105 দেখুন । অনুপস্থিত ফাইলটি {0}}


1

সমস্যা সমাধানের জন্য আমি এই পদক্ষেপগুলি ব্যবহার করেছি:

আপনার সমাধানে নুগেট প্যাকেজ যুক্ত করতে:

  1. প্রকল্পের ডান ক্লিক করুন (সমাধান নয়) আপনি নুগেট প্যাকেজগুলি উল্লেখ করতে চান।
  2. চয়ন করুন: নুগেট প্যাকেজ পরিচালনা করুন
  3. পপআপ উইন্ডোতে, বাম দিকে আপনার তিনটি পছন্দ রয়েছে। আপনি যদি অনলাইন> মাইক্রোসফ্ট এবং। নেট নির্বাচন করেন মাইক্রোসফ্ট এএসপি.নেট ওয়েব এপিআই ২.২ প্যাকেজ গ্রেপার (বা আপনার যা প্যাকেজ প্রয়োজন - আমার এটি ছিল) ইনস্টল করতে সক্ষম হবেন।
  4. এখন আপনার সমাধানটিতে ডান ক্লিক করুন (প্রকল্প নয়) এবং নুগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন চয়ন করুন । এটি সংকলনের সময় প্যাকেজগুলি স্বয়ংক্রিয়ভাবে ডাউনলোড হবে।

আমাকে যা করতে হয়েছিল তা হ'ল সমাধানের জন্য ন্যুগেট প্যাকেজ পুনরুদ্ধার সক্ষম করে। সম্ভবত সমস্ত কিছু ইতিমধ্যে সঠিকভাবে সেট আপ করা হয়েছিল was
schmiddy98

1

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


1

প্রথমে চেষ্টা করার বিষয়টি হ'ল সমাধানটি ডান-ক্লিক করুন এবং "নিউজ প্যাকেজগুলি পুনরুদ্ধার করুন" নির্বাচন করুন।

আমার ক্ষেত্রে এটি কার্যকর হয়নি, তাই আমি প্রকল্পের ফাইলটিতে "আমদানি" এবং "টার্গেট" মুছে ফেলার বিষয়ে কিছু প্রস্তাবনা অনুসরণ করেছি, এটি আমার 3 টি প্রকল্পের মধ্যে 2 টির জন্য কাজ করেছে, তবে শেষেরটিতে একটি ভিন্ন ত্রুটি পেয়েছে got

প্যাকেজ ম্যানেজার কনসোলটি খোলার এবং চালানোর জন্য যা কাজ করেছিল তা হল:

Update-Package -reinstall -ProjectName MyProjectName

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


1

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

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

এই লাইনের পরে, আমি এগুলি মন্তব্য করতে হবে:

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <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('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.props'))" />
    <Error Condition="!Exists('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets'))" />
  </Target>
  <Import Project="..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets" Condition="Exists('..\..\..\..\..\packages\EntityFramework.6.4.0\build\EntityFramework.targets')" />

আপনার সমাধানটি আপনাকে জিজ্ঞাসা করবে যে আপনার প্রকল্পে কোনও পরিবর্তন এসেছে, কেবল সমস্ত পুনরায় লোড করুন:

এখানে চিত্র বর্ণনা লিখুন তারপরে আমার সমাধানটি পুনর্নির্মাণের পরে সবকিছু ঠিকঠাক কাজ করে।


0

আমার এমভিসি ওয়েব অ্যাপ্লিকেশনটিতে ক্লাস লাইব্রেরিটি উল্লেখ করার সময় আমার একই সমস্যা ছিল,

ইস্যুটি ছিল দুটি প্রকল্পের মধ্যে নুগেট প্যাকেজ সংস্করণ নম্বরটি মেলেনি।

উদাহরণস্বরূপ: আমার ক্লাস লাইব্রেরির লগ 4 নেট ছিল 1.2.3 কিন্তু আমার ওয়েব অ্যাপে ছিল 1.2.6

ঠিক করুন: উভয় প্রকল্পের একই সংস্করণ নম্বর রেফারেন্স হয়েছে তা নিশ্চিত করুন।


0

.Sln এবং .csproj সম্পাদনা করা সর্বদা সহজ বা আকাঙ্ক্ষিত হয় না। একবার ত্রুটি তালিকাটি পেয়ে গেলে আপনি দেখতে পাবেন কী প্রকল্পগুলিতে প্যাকেজগুলি অনুপস্থিত রয়েছে (এছাড়াও, রেফারেন্স নোড সাধারণত সূচিত করে যে প্যাকেজগুলির উত্স কোড, সংস্থানগুলি, চিত্রগুলি বা কেবল পাঠ্য-ভিত্তিকগুলি না থাকলে অনুপস্থিত সমাবেশগুলি রয়েছে)।

আপনি প্যাকেজের সর্বশেষতম সংস্করণটি ব্যবহার না করে প্যাকেজগুলি সরিয়ে এবং তারপরে যুক্ত করা ভাল ধারণা নয়। অন্যথায় বিস্ময়ের জন্য প্রস্তুত থাকুন, সবসময় আনন্দদায়ক নয়।

যদি বলে, প্যাকেজ EntityFramework তারপর NuGet গ্যালারি থেকে আপনি সর্বশেষ সংস্করণ এই মন্তব্যটি লেখার সময় এটা পাবেন 6.1.3

সুতরাং, পরিস্থিতি সামাল দেওয়ার সবচেয়ে নিরাপদ উপায় হ'ল প্যাকেজগুলি একে একে পুনরুদ্ধার করা। হ্যাঁ, কিছুটা বেদনাদায়ক অনুশীলন কিন্তু বিভিন্ন প্যাকেজ সংস্করণের কারণে সূক্ষ্ম বাগগুলি তাড়া করা হতে পারে আরও বেশি অপ্রীতিকর।

এটি বলার পরে এবং আবার অ্যান্টিটি ফ্রেমওয়ার্কটি অনুপস্থিত প্যাকেজ হতে দিন, আপনি প্যাকেজ-ম্যানেজার কনসোলে নিম্নলিখিত কমান্ডটি জারি করতে পারেন:

PM> Install-Package EntityFramework -Version 6.0.1 

এটি সঠিক সংস্করণটি ইনস্টল করবে, এটি 6.০.১ , প্যাকেজস কনফিগ- এ উল্লিখিত সংস্করণ :

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="EntityFramework" version="6.0.1" targetFramework="net451" />
    </packages>

0

আমার কাছে তখন ছিল যখন সিএসপিজেজ এবং স্লেন ফাইলগুলি একই ফোল্ডারে ছিল (বোকা, আমি জানি)। একবার আমি সিএসপ্রোজ ফোল্ডারের উপরের ফোল্ডারে স্লান ফাইলটিতে সরে গেলাম আমার


-1

আমি সমাধান মূল ফোল্ডারে '.nuget' নামে একটি ফোল্ডার তৈরি করেছি তারপরে নিম্নলিখিত ফন্টে এই ফোল্ডারে 'নুগেট.কনফিগ' ফাইল যুক্ত করেছি

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
 <add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>

তারপরে। (এমএসবাইল্ডপ্রজেক্ট ডিরেক্টরি) .. ory হিসাবে নীচে '.nuGet.targets' ফাইল তৈরি করা হয়েছে \

    <!-- Enable the restore command to run before builds -->
    <RestorePackages Condition="  '$(RestorePackages)' == '' ">false</RestorePackages>

    <!-- Property that enables building a package from a project -->
    <BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>

    <!-- Determines if package restore consent is required to restore packages -->
    <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>

    <!-- Download NuGet.exe if it does not already exist -->
    <DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <!-- Package sources used to restore packages. By default will used the registered sources under %APPDATA%\NuGet\NuGet.Config -->
    <!--
        <PackageSource Include="https://nuget.org/api/v2/" />
        <PackageSource Include="https://my-nuget-source/nuget/" />
    -->
</ItemGroup>

<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
    <!-- Windows specific commands -->
    <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
    <PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
    <PackagesDir>$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>
</PropertyGroup>

<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
    <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
    <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
    <PackagesConfig>packages.config</PackagesConfig>
    <PackagesDir>$(SolutionDir)packages</PackagesDir>
</PropertyGroup>

<PropertyGroup>
    <!-- NuGet command -->
    <NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
    <PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>

    <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
    <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>

    <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>

    <RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
    <!-- Commands -->
    <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch) -o "$(PackagesDir)"</RestoreCommand>
    <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols</BuildCommand>

    <!-- Make the build depend on restore packages -->
    <BuildDependsOn Condition="$(RestorePackages) == 'true'">
        RestorePackages;
        $(BuildDependsOn);
    </BuildDependsOn>

    <!-- Make the build depend on restore packages -->
    <BuildDependsOn Condition="$(BuildPackage) == 'true'">
        $(BuildDependsOn);
        BuildPackage;
    </BuildDependsOn>
</PropertyGroup>

<Target Name="CheckPrerequisites">
    <!-- Raise an error if we're unable to locate nuget.exe  -->
    <Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
    <SetEnvironmentVariable EnvKey="VisualStudioVersion" EnvValue="$(VisualStudioVersion)" Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' " />
    <DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')"  />
</Target>

<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
    <Exec Command="$(RestoreCommand)"
          Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />

    <Exec Command="$(RestoreCommand)"
          LogStandardErrorAsError="true"
          Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>

<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
    <Exec Command="$(BuildCommand)" 
          Condition=" '$(OS)' != 'Windows_NT' " />

    <Exec Command="$(BuildCommand)"
          LogStandardErrorAsError="true"
          Condition=" '$(OS)' == 'Windows_NT' " />
</Target>

<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        <OutputFilename ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
        <Reference Include="System.Core" />
        <Using Namespace="System" />
        <Using Namespace="System.IO" />
        <Using Namespace="System.Net" />
        <Using Namespace="Microsoft.Build.Framework" />
        <Using Namespace="Microsoft.Build.Utilities" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
            try {
                OutputFilename = Path.GetFullPath(OutputFilename);

                Log.LogMessage("Downloading latest version of NuGet.exe...");
                WebClient webClient = new WebClient();
                webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);

                return true;
            }
            catch (Exception ex) {
                Log.LogErrorFromException(ex);
                return false;
            }
        ]]>
        </Code>
    </Task>
</UsingTask>

 <UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        <EnvKey ParameterType="System.String" Required="true" />
        <EnvValue ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
        <Using Namespace="System" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
            try {
                Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
            }
            catch  {
            }
        ]]>
        </Code>
    </Task>
</UsingTask>

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