यह परियोजना NuGet पैकेज (ओं) का संदर्भ देती है जो इस कंप्यूटर पर गायब हैं


313

मेरे पास ASP.NET MVC5 एप्लिकेशन है जो कल काम करता था और अब मुझे यह त्रुटि हो रही है जब मैं निर्माण करने की कोशिश करता हूं:

यह परियोजना NuGet पैकेज (ओं) का संदर्भ देती है जो इस कंप्यूटर पर गायब हैं।

मेरे पास दो विकल्प हैं जो nuget को स्वचालित रूप से गुम हुए पैकेजों को डाउनलोड / चालू करने की अनुमति देते हैं। मैंने संकुल फ़ोल्डर में सभी फ़ाइलों को हटाने की कोशिश की है और फिर उन्हें फिर से डाउनलोड करने के लिए nuget किया है। इसके अलावा जब मैं नगेट खोलता हूं और अपडेट देखता हूं तो कहता है कि ऐसा कोई नहीं है जिसे इंस्टॉल करने की जरूरत है। मैं समझ नहीं पा रहा हूं कि इस आश्चर्यजनक कष्टप्रद मुद्दे से आगे बढ़ने के लिए और क्या करना है।


1
मैंने प्रोजेक्ट पर राइट क्लिक करके और उस विकल्प को चुनकर नगेट रिस्टोर को भी सक्षम किया है। इसके बाद उस फ़ोल्डर में एक नगेट फ़ोल्डर और तीन आइटम जोड़े और समस्या को हल करने के लिए कुछ भी नहीं करता है। मैंने फिर से निर्माण करने की कोशिश की है और अभी भी ऊपर वही त्रुटि है।
ऑस्टिन हैरिस

क्या आपके समाधान में एक .nuget फ़ोल्डर शामिल है और क्या आपने नवीनतम संस्करण में NuGet को अपडेट किया है? यहां देखें: stackoverflow.com/questions/18833649/…
डेविड ब्रेबेंट

हां, यह कोशिश की और यह मेरी बिल्ड त्रुटि संदेश समस्या हल नहीं हुई।
ऑस्टिन हैरिस

इस त्रुटि का एक अन्य कारण त्रुटि है The operation has timed out.। निर्माण के दौरान। आपको अपने बिल्ड लॉग या विजुअल स्टूडियो ऑनलाइन बिल्ड फेल्ड सूचना स्क्रीन में डायग्नोस्टिक्स टैब को जांचना होगा ।
जोशुआ ड्रेक

मेरे लिए कोई भी समाधान काम नहीं करता है। मैं एक रेपो से डाउनलोड कर रहा हूं और पहली परियोजना के लिए सही फ़ाइल संरचना में संकुल को पुनर्स्थापित करता है, दूसरी परियोजना उन्हें नहीं मिल सकती है। .Csproj की जाँच से पता चलता है कि सही सापेक्ष पथ का उपयोग किया जा रहा है इसलिए मैं इसे हल करने की कोशिश कर रहा हूं। github.com/DanJ210/ProgrammersTest
डैनियल जैक्सन

जवाबों:


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>

वास्तव में, इस स्निपेट में आप देख सकते हैं कि त्रुटि संदेश कहां से आ रहा है।

मैं MSBuild- एकीकृत पैकेज रिस्टोर से ऑटोमैटिक पैकेज रिस्टोर ( http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore ) में परिवर्तित कर रहा था


12
यह मेरे लिए काम करता है, लेकिन मुझे केवल <लक्ष्य> </ लक्ष्य> तत्व को निकालने की आवश्यकता है। अगर मैं <आयात> तत्व को भी हटा देता तो वीएस [2013] इसे बहाल करता।
रॉबर्ट टेलर

3
यह गंभीर रूप से अविश्वसनीय है। Microsoft सब कुछ इतना मुश्किल क्यों करता है?
dimiguel

10
अगर इसे हटाया जा सकता है, तो यह पहले स्थान पर क्यों है?
OK999

1
OK9999, एक बिंदु पर, आपने इसे विज़ुअल स्टूडियो के पुराने संस्करण से सक्षम किया होगा, समाधान पर राइट क्लिक करके और "सक्षम करें एनगेट पैकेज रिस्टोर" को चुनकर, जो कि पुराना तरीका था। हमें अब और ज़रूरत नहीं है
लोरेन पॉलसेन

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. प्रोजेक्ट पर राइट क्लिक करें। Csproj संपादित करें।
  3. फ़ाइल से भाग निकालें। सहेजें।
  4. प्रोजेक्ट पर राइट क्लिक करें। रिलोड प्रोजेक्ट।

जब आप किसी प्रोजेक्ट को एक जगह से दूसरी जगह ले जाते हैं, तो यह बहुत अच्छा काम करता है।
डीन सेओ

4
@ इवानसेंटियागो यह पहले से ही एक ही समाधान के साथ ऊपर रखा गया था! .. वोट डाउनलोड! ..
जैक

2
@ClintEastwood मेरे उत्तर ने इसे करने के लिए कैसे समझाया । यही अंतर है। यदि कोई उपयोगकर्ता HOW TO मेरे उत्तर की तलाश में है, तो उसके ऊपर दिए गए उत्तर के विपरीत है।
इवान सैंटियागो

2
@IvanSantiago आप कर सकते हैं: इसे टिप्पणी के रूप में जोड़ा, या, How To के साथ मूल उत्तर को संपादित किया।
कॉलिन

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 भर में .. (संकुल) को $ (सॉल्यूशनडेयर) संकुल में बदल दिया और इसे ठीक कर दिया।
जोएनसीए

2
यदि आप मैन्युअल रूप से .csproj फ़ाइल के साथ चक्कर नहीं लगाना चाहते हैं, तो मैंने पाया है कि परियोजना के लिए आपके द्वारा स्थापित किए गए सभी नगेट पैकेजों का एक नोट लेना, उन्हें हटाना और उन्हें फिर से स्थापित करना मेरे लिए इस मुद्दे को हल किया है। जब मैं इस मुद्दे पर भागा तो मैं अपने स्वयं के गिट रिपॉजिटरी में डालने के लिए एक समाधान से एक परियोजना को हटाने की कोशिश कर रहा था।
WiteCastle

इसका मतलब यह है कि आपकी .csproj आपकी .sln फ़ाइल के समान स्तर पर है?
सिमोन_विवर

@Simon_Weaver आपके .csprojरिश्तेदार की स्थिति .slnइस संदर्भ में मायने नहीं रखती है। क्या मायने रखता है कि क्या आपके संदर्भ में संदर्भित कुछ भी .csprojकहीं और स्थानांतरित हो गया था। यदि ऐसा है, तो आपको इसे ठीक करने की आवश्यकता है। यदि आपने अपनी '.csproj' को हर उस चीज़ के साथ स्थानांतरित कर दिया है जो इसे अक्षुण्ण करती है, लेकिन आपके पास .slnजहाँ यह है, वहाँ रखा है , तो आपको .slnफ़ाइल को .csproj-es के नए स्थान पर ठीक करना होगा, लेकिन .csprojफ़ाइलों को संपादित करने की कोई आवश्यकता नहीं होगी ।
निकिता जी

22

मैं आसानी से अपने हल पर क्लिक करके और फिर सक्षम करें NuGet पैकेज पुनर्स्थापना विकल्प पर क्लिक करके इस समस्या को हल करता हूं

(पुनश्च: सुनिश्चित करें कि आपके पास टूल्स से नुगेट इंस्टाल है -> एक्सटेंशन्स और अपडेट -> विजुअल स्टूडियो 2013 के लिए नगेट पैकेज मैनेजर। यदि यह एक्सटेशन पहले स्थापित नहीं किया गया है)

आशा है ये मदद करेगा।


7
यह नगेट पैकेज को बहाल करने का पुराना तरीका है और इससे बचना चाहिए।
मफिन मैन

2
@ TheMuffinMan: क्या आप स्पष्ट कर सकते हैं कि नया तरीका क्या है और इस तरह से क्यों बचा जाना चाहिए (यह विचार करते हुए कि वीएस 2013 त्रुटि आउटपुट आपको वास्तव में ऐसा करने के लिए कहता है)?
कैंट्रियन बियर

2
@CantrianBear इस पृष्ठ पर नेविगेट करें docs.nuget.org/consume/package-restore और बुलाया अनुभाग ढूंढें MSBuild-Integrated Package Restore। यह पुराना तरीका है और यह कुछ कारणों को सूचीबद्ध करता है कि आपको नए तरीके का उपयोग क्यों करना चाहिए।
मफिन मैन

इस ब्लॉग पर डेविड एब्बो का ब्लॉग देखें। Davidebbo.com/2014/01/… अब ... "NuGet अब VS में निर्माण से पहले हमेशा पैकेज पुनर्स्थापित करता है।"
टाइमबी ३३

17

मेरे मामले में इसे Microsoft.Build.Bcl संस्करण के साथ करना था। मेरा नगेट पैकेज संस्करण 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

यदि आप TFS का उपयोग कर रहे हैं

समाधान के फ़ोल्डर से 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>

यदि आप TFS का उपयोग नहीं कर रहे हैं

.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>

संदर्भ: स्वचालित पैकेज पुनर्स्थापना का उपयोग करने के लिए MSBuild- एकीकृत समाधान माइग्रेट करना


8

क्या यह संभव है कि संकुल को गलत फ़ोल्डर में बहाल किया गया है? जांचें कि csproj फ़ाइलों में पथ सही हैं।

यदि वे अलग हैं तो यह संकुल के कारण हो सकता है अब एक अलग स्थान पर बहाल किया जा रहा है। यह एक NuGet.Config फ़ाइल के कारण हो सकता है जो इस तरह से एक नोड निर्दिष्ट करने में जाँच की जा रही है:

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

पैकेज बहाल किए जा रहे हैं, परियोजनाओं द्वारा अभी भी पुराने स्थान को देख रहे हैं।


1
मेरा मानना ​​है कि यह एक पथ मुद्दा हो सकता है क्योंकि मैंने फ़ाइलों के स्थान को स्थानांतरित कर दिया है, लेकिन मुझे नहीं लगता कि जहां कहीं भी एक कठिन कोडित पथ है। मैंने proj फ़ाइल में देखा और सभी संकुल फाइलें इस तरह सापेक्ष प्रतीत होती हैं: <संदर्भ शामिल करें = "Antlr3.Runtime, संस्करण = 3.5.0.2, संस्कृति = तटस्थ, PublicKeyToken = eb42632606809261f, processorArchitecture = MSIL"> <SpecificVersion> झूठी। </ SpecificVersion> <HintPath> .. \ package \ Antlr.3.5.0.2 \ lib \ Antlr3.Runtime.dll </ HintPath> </ संदर्भ>
ऑस्टिन हैरिस

इसे जोड़कर web.config ने मदद नहीं की: <add key = "repositoryPath" मान = ".. \ _ \ पैकेज" />
Austin Harris

आप इसे web.config में जोड़ना नहीं चाहते हैं। मैं NuGet.config फ़ाइल का उल्लेख कर रहा था और आप संबंधित पथ की जांच करना चाहते हैं। आपके पैकेज csproj फ़ाइलों के सापेक्ष कहाँ हैं? क्या वे .. \ पैकेज में हैं? ऐसा लगता है कि पैकेज ठीक से बहाल किए जा रहे हैं, लेकिन आपकी परियोजनाएं गलत जगह दिख रही हैं।
infojolt

6

मेरी भी यही समस्या थी। मेरे मामले में Microsoft.Bcl.Build पैकेज स्थापित करने से समस्या ठीक हो गई।


इसने मेरे लिए भी काम किया - लेकिन मुझे नहीं पता कि क्या करने के लिए सही चीज़ उस पैकेज को स्थापित किया गया था (जो कि henkie14 के संस्करण में नीचे दिए गए उत्तर बदलने के समान प्रभाव है या बस उन सभी लक्ष्य को हटा दें - क्या वे वास्तव में कुछ उपयोगी कर रहे हैं?
Gaz

में 1.0.21संस्करण पैकेज में कोई फ़ाइलें, की स्थापना के 1.0.14संस्करण इस तय की।
FLCL

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')" />

यह प्रोजेक्ट NuGet पैकेज (ओं) को संदर्भित करता है जो इस कंप्यूटर पर गायब हैं। उन्हें डाउनलोड करने के लिए NuGet पैकेज पुनर्स्थापना सक्षम करें। अधिक जानकारी के लिए, http://go.microsoft.com/fwlink/?LinkID=322105 देखें । अनुपलब्ध फ़ाइल {0} है।


1

ये वे चरण हैं, जिनका मैंने समस्या को हल करने के लिए उपयोग किया है:

अपने समाधान में नगेट पैकेज जोड़ने के लिए:

  1. उस प्रोजेक्ट पर राइट क्लिक करें (समाधान नहीं) जिसे आप नगेट पैकेज के लिए संदर्भित करना चाहते हैं।
  2. चुनें: नगेट पैकेज प्रबंधित करें
  3. पॉपअप विंडो पर, बाईं ओर आपके पास तीन विकल्प हैं। यदि आप ऑनलाइन> Microsoft और .NET चुनते हैं , तो आप Microsoft ASP.NET वेब एपीआई 2.2 पैकेज ग्रूपर (या आपको जो भी पैकेज की आवश्यकता है - मेरा यह था) स्थापित करने में सक्षम होंगे।
  4. अब अपने समाधान पर क्लिक करें (प्रोजेक्ट नहीं) और nuget संकुल पुनर्स्थापना सक्षम करें चुनें । इससे संकुल को संकलित रूप से स्वचालित रूप से डाउनलोड किया जा सकेगा।

मुझे बस इतना करना था कि समाधान के लिए नौगट पैकेज को फिर से सक्षम किया जाए। जाहिरा तौर पर बाकी सब कुछ पहले से ही सही ढंग से स्थापित किया गया था।
schmiddy98

1

मेरे लिए यह काम कर रहा है क्योंकि मैंने अभी-अभी काम करने वाले समाधान से मौजूदा फ़ोल्डर में एक .nuget फ़ोल्डर की प्रतिलिपि बनाई है, और यह सामग्री संदर्भित है!


1

कोशिश करने वाली पहली बात समाधान पर राइट-क्लिक करना और "रिस्टोर नगेट पैकेज" का चयन करना है।

मेरे मामले में, जो काम नहीं करता था, इसलिए मैंने प्रोजेक्ट फ़ाइल पर "आयात" और "लक्ष्य" को हटाने के लिए कुछ सिफारिशों का पालन किया, इसने मेरी 3 परियोजनाओं में से 2 के लिए काम किया, लेकिन पिछले एक पर एक अलग त्रुटि मिली।

पैकेज मैनेजर कंसोल को खोलने और चलाने के लिए क्या काम किया गया था:

Update-Package -reinstall -ProjectName MyProjectName

इसमें कुछ समय लगता है लेकिन चूंकि यह सभी पैकेजों को पुन: स्थापित करता है इसलिए आपकी परियोजना बिना किसी समस्या के संकलन करेगी


1

मेरे साथ भी वही दिक्कत है। मुझे इसका सामना करना पड़ा जब मैंने एक मौजूदा परियोजना की प्रतिलिपि बनाई और इसे अपनी समाधान निर्देशिका के फ़ोल्डर में स्थानांतरित कर दिया और इसे मौजूदा परियोजना के रूप में अपने खाली समाधान में जोड़ दिया। इसलिए मुझे अपनी csproj फाइल को एडिट करना होगा और कोड की इस विशिष्ट लाइन को देखना होगा, ज्यादातर समय, यह आखिरी लाइनों पर पाया जा सकता है:

  <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')" />

आपका समाधान यह संकेत देगा कि आपकी परियोजना पर एक बदलाव हुआ था, बस Reload All का चयन करें:

यहां छवि विवरण दर्ज करें फिर मेरे समाधान के पुनर्निर्माण के बाद सब कुछ ठीक काम करता है।


0

जब मैं अपने MVC वेब एप्लिकेशन में क्लास लाइब्रेरी का संदर्भ देता हूं, तो मेरे पास एक ही मुद्दा था,

मुद्दा दो परियोजनाओं के बीच nuget पैकेज संस्करण संख्या बेमेल था।

ex: मेरी कक्षा की लाइब्रेरी में 1.2.3 का लॉग 4नेट था लेकिन मेरे वेबैप में 1.2.6 था

तय: बस सुनिश्चित करें कि दोनों परियोजना में समान संस्करण संख्या संदर्भित है।


0

संपादन .ln और .csproj हमेशा आसान या वांछनीय नहीं होता है। एक बार जब आप त्रुटि सूची प्राप्त कर लेते हैं, तो आप देख सकते हैं कि किन परियोजनाओं में लापता पैकेज हैं (भी, संदर्भ नोड आमतौर पर संकेत देते हैं कि अनुपलब्ध असेंबली हैं जब तक कि पैकेज स्रोत कोड, संसाधन, चित्र या सिर्फ पाठ-आधारित नहीं हैं)।

जब तक आप पैकेज के नवीनतम संस्करण का उपयोग नहीं करते, तब तक पैकेज को जोड़ना और जोड़ना एक अच्छा विचार नहीं है। अन्यथा आश्चर्य के लिए तैयार रहें, हमेशा सुखद नहीं।

यदि कहते हैं, पैकेज EntityFramework है तो NuGet गैलरी से आपको नवीनतम संस्करण मिलता है जो इस टिप्पणी को लिखने के समय 6.1.3 है

इसलिए, शायद स्थिति को संभालने का सबसे सुरक्षित तरीका एक-एक करके गायब हुए पैकेजों को बहाल करना है। हां, थोड़ा दर्दनाक व्यायाम लेकिन विभिन्न पैकेज संस्करण के कारण सूक्ष्म कीड़े का पीछा करना शायद बहुत अधिक अप्रिय है।

यह कहा जाने के बाद, और फिर से EntityFramework लापता पैकेज होने दें, आप पैकेज-प्रबंधक कंसोल में निम्न आदेश जारी कर सकते हैं:

PM> Install-Package EntityFramework -Version 6.0.1 

यह सही संस्करण स्थापित करेगा, जो कि 6.0.1 है , वह वह है जो संकुल में निर्दिष्ट है ।config:

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

0

मेरे पास यह तब था जब csproj और sln फाइलें एक ही फ़ोल्डर में थीं (बेवकूफ, मुझे पता है)। एक बार जब मैं csproj फ़ोल्डर के ऊपर फ़ोल्डर में फाइल sln करने के लिए चला गया


-1

मैंने समाधान रूट फ़ोल्डर में '.nuget' नाम का एक फ़ोल्डर बनाया, फिर सामग्री के बाद इस फ़ोल्डर में 'NuGet.Config' फ़ाइल जोड़ी।

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

फिर $। (MSBuildProjectDirectory) .. \ _ के रूप में '.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>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.