समाधान से नगेट पैकेज को हटा दें


148

मैंने हाल के नगेट पैकेज रिस्टोर सुविधा को 'एनगेट पैकेज रिस्टोर सक्षम करें' का उपयोग करके एक समाधान में जोड़ा: http://docs.nuget.org/docs/workflows/use-nuget-without-committing-packages

हालाँकि इसने मेरे बिल्ड सर्वर को तोड़ दिया और मेरे पास इसे ठीक करने का समय नहीं था, इसलिए मैं इसे हटाना चाहता था। जहाँ तक मुझे पता है, उसके लिए कोई विकल्प नहीं है, इसलिए मैंने अपनी सभी * .csproj फ़ाइलों से मैन्युअल रूप से निम्न पंक्ति हटा दी:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

अब समस्या यह है कि हर बार मेरी * .csproj फ़ाइलों की जाँच की जाती है या मेरा समाधान खोला जाता है, लाइन को स्वचालित रूप से फिर से जोड़ा जाता है, अगर मैं गलती से जाँच कर लेता हूँ तो मेरा निर्माण टूट जाता है :(

किसी भी विचार मैं इसे स्थायी रूप से कैसे निकाल सकता हूं?

अद्यतन: नीचे दिए गए उत्तर के बावजूद, यह अभी भी समाधान खोलते समय वापस आ रहा है, उसी समस्या वाला कोई भी?


2
क्या आप स्रोत नियंत्रण में केवल बदलाव को रोलबैक नहीं कर सकते हैं?
बेटी

अच्छी तरह से यह काफी बड़ा बदलाव था, लेकिन आपकी टिप्पणी के लिए धन्यवाद मुझे एक नज़र आया, और ऐसा लगता है कि यह समाधान पथ में एक .nuget फ़ोल्डर भी जोड़ दिया, हटा दिया कि यह देखने के लिए कि क्या यह समस्या को ठीक करता है
Wiebe Tijsar

क्या आपने बिल्ड सर्वर को ठीक करने का प्रबंधन किया था? (और क्या यह टीमसिटी है?), क्योंकि आयात परियोजना लाइन जो आपने ऊपर बोली है, वह क्या है जिससे मेरी टीम की विफलता विफल होती है
Baldy

@ बाल्दी नहीं हम टीएफएस बिल्ड का उपयोग कर रहे हैं और मैं वास्तव में एक समाधान की तलाश में नहीं था, बस इसे हटा दिया (अभी भी बाद में इसमें गोताखोरी की योजना बना रहा है)
Wiebe Tijsma

3
मैंने इस समस्या को ठीक करने के लिए NuGet टीम के लिए एक मुद्दा बनाया है। कृपया इसे nuget.codeplex.com/workitem/3756 पर देखें
डेडलीडॉग

जवाबों:


214

मैं बहुत अच्छी तरह से नहीं देखा, वहाँ एक और संपत्ति परियोजना फाइलों में जोड़ा गया है:

<RestorePackages>true</RestorePackages>

बस इसे * इन सभी लाइनों को सभी * .csproj फ़ाइलों से मैन्युअल रूप से निकालना होगा:

  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />

अपडेट करें:

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

UPDATE2:

समाधान रूट से .nuget फ़ोल्डर को भी हटाएँ

Update3:

NuGet का एक बाद का संस्करण एक और खंड जोड़ता है जिसे आपको निकालने की आवश्यकता है:

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

Update4

फ़ोल्डर NuGet.Targetsमें स्थित के अंदर .nuget, एक और खंड है जो नई परियोजनाओं में जुड़ जाता है ... इसे गलत पर स्विच करें।

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
    RestorePackages;
    $(BuildDependsOn);
</BuildDependsOn>

7
मैंने पाया है कि <Import Project="$(SolutionDir)\.nuget\nuget.targets" />.csproj फ़ाइल के अंत में भी है जिसे मैन्युअल रूप से हटाने की आवश्यकता है।
टिमडॉग

6
हा! धीरे-धीरे दूर जाता है :)
टिमडॉग

5
यह बात मुझे भी कचोट रही है। यदि आपकी परियोजनाएं कई अलग-अलग समाधानों में हैं, तो पैकेज पुनर्स्थापना सुविधा समस्याओं का कारण बनती है।
डेमियन

7
"सुनिश्चित करें कि आप समाधान बंद करें" वास्तव में यहां महत्वपूर्ण महत्व है, जैसा कि VS2010 को csproj / msbuild फ़ाइलों को कैश करने के लिए लगता है (कुछ संशोधनों को उठाए बिना)। मुझे VS2012 में यह व्यवहार नजर नहीं आया, लेकिन विजुअलस्टैडियो के भीतर इन फाइलों को संशोधित करते समय इसने मुझे बहुत परेशान किया है।
ज़ेवियर डिकॉस्टर

4
मैंने इस समस्या को ठीक करने के लिए NuGet टीम के लिए एक मुद्दा बनाया है। कृपया इसे nuget.codeplex.com/workitem/3756 पर देखें
डेडलीडॉग

48

Nuget पैकेज पुनर्स्थापना अक्षम करने के लिए:

  1. .Nuget फ़ोल्डर हटाएं
  2. सभी .csproj फ़ाइलों से विशिष्ट लाइनें निकालें

हटाने के लिए लाइनें:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<RestorePackages>true</RestorePackages>

नोट: सुनिश्चित करें कि आप समाधान को पुनः लोड करने से पहले एक बार में सभी परिवर्तन करते हैं अन्यथा यह उन्हें वापस जोड़ देगा।

यह निम्नलिखित लेख पर आधारित है: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

इसके अलावा, आप यह जांचना चाहेंगे कि यह विकल्प अक्षम है: http://docs.nuget.org/docs/workflows/use-nuget-without-committing-packages


मैंने इस समस्या को ठीक करने के लिए NuGet टीम के लिए एक मुद्दा बनाया है। कृपया इसे nuget.codeplex.com/workitem/3756 पर देखें
डेडलीडॉग

1
धन्यवाद, मेरे लिए यह सिर्फ उस विकल्प को तोड़ रहा था
Maarten Kieft

मैंने कई परियोजनाओं के साथ रिपोज को साफ करने में बड़ी सफलता के साथ IFix टूल का उपयोग किया है। यह मूल रूप से इन चरणों को स्वचालित करता है। visualstudiogallery.msdn.microsoft.com/...
angularsen

.Nuget फ़ोल्डर छिपा हुआ है और आपको इसे न केवल परियोजना से निर्देशिका से निकालने की आवश्यकता है ।
एरिक बर्गस्टेड

8

क्या यह यहाँ स्थापित नहीं है?

विकल्प ... -> नुगेट पैकेज मैनेजर -> [अनचेक] नुगेट को लापता पैकेज डाउनलोड करने की अनुमति दें

यहाँ छवि विवरण दर्ज करें

मैं विजुअल स्टूडियो प्रोफेशनल + रेसपेर 8.2 का उपयोग कर रहा हूं


मैंने पैकेज फ़ोल्डर को हटा दिया और अपनी समस्या को ठीक करने के लिए पैकेज कैश को साफ़ कर दिया। धन्यवाद!
ट्रेस्टो

1
नहीं, यह .proj फ़ाइलों को अपडेट नहीं करता है - इसलिए समस्या वापस आ जाती है - लेकिन यहाँ भी इसे करना अच्छा है :-)
schmoopy

निर्माण करते समय आउटपुट विंडो यह दिखाती है: Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.'यह सिर्फ एक पुष्टि है कि यह जाने का रास्ता होना चाहिए।
मॉस्लेम बेन ढोउ

1
यह नुगेट पैकेज रिस्टोर से असंबंधित है। वीएस के पुराने संस्करणों में "एनगेट पैकेज रिस्टोर को सक्षम करें" शीर्षक वाली परियोजनाओं के लिए एक संदर्भ मेनू आइटम था, जो एक .nuget/फ़ोल्डर बना देगा और .csprojएक .targetsफ़ाइल को संदर्भित करने के लिए संशोधित करेगा । आप nuget.exeअपने VCS के लिए प्रतिबद्ध थे (eww, समस्या nuget हल! आजकल, msbuild /restoreमौजूद है और वीएस का बिल्ट-इन पैकेज रिस्टोर है। ओपी पूछ रहा है कि चीजों को करने के पुराने, बुरे तरीके को कैसे हटाया जाए - वी.एस. के सही अंतर्निहित पैकेज को कैसे पुनर्स्थापित किया जाए, समर्थन को कैसे बहाल किया जाए।
बिंकी

5

वर्तमान में MSBuild- एकीकृत पैकेज रिस्टोर का उपयोग करने वाले समाधानों को स्वचालित पैकेज रिस्टोर पर माइग्रेट किया जा सकता है। मुझे जो समझ में आता है, उससे उन लोगों की मदद करनी चाहिए जो सीआई के मुद्दों का सामना कर रहे हैं। (अगर मुझसे गलती हुई है तो कृपया मुझे सुधारें)।

कृपया नगेट वेबसाइट पर दस्तावेज़ देखें: MSBuild- एकीकृत समाधानों का उपयोग करने के लिए http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore पर स्वचालित पैकेज पुनर्स्थापना का उपयोग करें

टीएफएस के साथ और उसके बिना परिवर्तित करने के लिए वहां जानकारी है।

डेविड इबो ने कुछ जानकारी http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html पर भी पोस्ट की



3

NuGet के पास स्वत: पैकेज रिस्टोर में माइग्रेट करने के बारे में एक ब्लॉग पोस्ट है: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

ब्लॉग पोस्ट में संदर्भित एक पॉवरशेल स्क्रिप्ट है जो आवश्यक लाइनों को हटाने के लिए स्वचालित रूप से (और पुनरावर्ती) ध्यान रखेगी: https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob-master-migrateToAutomaticPackageRestore.ps1

डिसएबल नुगेट पैकेज रिस्टोर ऑप्शन को सीधे देने से वॉट फिक्स के रूप में चिह्नित नहीं किया जाता है: https://nuget.codeplex.com/workit//83


2

मैंने 2012 तक उपयोग न करने के लिए स्वीकृत समाधान का पालन किया। हालांकि इससे काम हुआ,

  1. पूरी तरह से वीएस को बंद करें
  2. अद्यतन <RestorePackages>true</RestorePackages>करने के लिए <RestorePackages>false</RestorePackages>और हटाने के<Import Project="$(SolutionDir)\.nuget\nuget.targets" />लाइन
  3. इसके अलावा नाम दिया nuget.exeकरने के लिएnuget.exe.NotExe

2

किसी के लिए अभी भी पुराने स्टाइल NuGet पैकेज रिस्टोर का उपयोग करके किसी प्रोजेक्ट को साफ करने की आवश्यकता है, यहां उपलब्ध IFix टूल प्रक्रिया को स्वचालित करता है।

बस इंस्टॉलर चलाएं ( IFixजोड़ा जाएगा PATH) और फिर निम्न को चलाएं:

IFix nugetrestore --fix

आप इसे पहले चेक मोड में चला सकते हैं यह देखने के लिए कि यह क्या साफ करेगा:

IFix nugetrestore --check

1

मेरी भी यही समस्या थी। मैंने क्या किया: 1) प्रत्येक प्रॉजेक्ट में .csproj फाइल को सॉल्यूशन में जाना, इसे नोटपैड में खोलें और फिर xml का हिस्सा निकालकर सेव कर लें।

2) फिर मैंने पूरे समाधान में सभी package.config फ़ाइलों को हटा दिया।

3) फिर मुझे .nuget और पैकेज फ़ोल्डर्स को हटाना पड़ा।

इस बिंदु पर, मेरे पास पूरी तरह से NuGet मुक्त समाधान था।

4) फिर मैंने मैन्युअल रूप से किसी भी आवश्यक DLL और हिट संकलन का संदर्भ दिया और समाधान NuGet संकुल के बिना एक विजेता की तरह भाग गया।


1

अपनी समाधान निर्देशिका पर जाएं जहां आपके पास [$(SolutionDir)\.nuget\nuget.targets] .nugetफ़ोल्डर और nuget.targetsफ़ाइल है इसके अंतर्गत फ़ोल्डर को हटा दें, और अपने csproj से लाइनों को हटा दें पिछली बार के लिए ।

समस्या आपको दोबारा बग करने के लिए नहीं आएगी।



0

मैंने गलती से VS2012 RC में अपने प्रोजेक्ट को खोलने के दौरान इस "पैकेज रिस्टोर" विकल्प को सक्षम किया और ऐसी त्रुटियां प्राप्त करना शुरू कर दिया, जो कुछ इस तरह दिखती थीं:

"त्रुटि 1 'C: \ FolderX \ SomeProject.nuget \ nuget.exe' का पता लगाने में असमर्थ

उपरोक्त निर्देशों का पालन करने में त्रुटि को ठीक करने के लिए, मैंने प्रत्येक प्रोजेक्ट फ़ाइल को नोटपैड में खोला और उस रिस्टोरपैक लाइन को हटा दिया।


0

मैं ये कदम उठाकर इस मुद्दे को हल करने में सक्षम था:

1) सुनिश्चित करें कि आप अपने सभी मौजूदा चेक-आउट फ़ाइलों में परिवर्तन का बैकअप लेते हैं।

2) अपने C: \ (TFS के लिए मैप किया गया पथ) से समाधान फ़ोल्डर को भौतिक रूप से हटा दें।

3) अपने समाधान के लिए टीएफएस से नवीनतम प्राप्त करें।

4) चरण -1 में आपके द्वारा लिए गए बैकअप से आपके परिवर्तन (यदि कोई हो) की प्रतिलिपि बनाएँ।

उम्मीद है की वो मदद करदे !


-2

मैं ठीक उसी समस्या में भाग गया और परियोजना फ़ाइलों से सभी .nuget और RestorePackage टैग हटाने की कोशिश की, लेकिन एक परियोजना सिर्फ इस बात को पुनः लोड नहीं करेगी कि मैंने कितनी अच्छी तरह से .nuget और RestorePackages टैग की जांच की। मुझे लगता है कि कहीं न कहीं इसके कुछ छिपे हुए संदर्भ हैं।

अंत में फाइलों को कॉपी करना और एक नई परियोजना बनाना और समाधान के लिए आयात करना आसान था।


-8

नगेट चूसता है। बस नगेट्स को हटा दें और उन परियोजनाओं के रूट डायरेक्टरी में पैकेज तत्वों से पैकेज तत्वों को हटा दें या टिप्पणी करें जहां यह एक समस्या है। इसके बजाय कुछ लिबर फ़ोल्डर में सीधे संदर्भ का उपयोग करें।

<?xml version="1.0" encoding="utf-8"?>
  <packages>
    <!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
  </packages>

यह 'बेकार' है, किसी भी अन्य उत्पाद के रूप में, यदि आप नहीं जानते कि इसका उपयोग कैसे करें और इसे समझने का प्रयास न करें।
विएब तिजमा 15

यह ठीक है, लेकिन मेरे विकल्प में आपको अपनी परियोजना पर पर्याप्त नियंत्रण नहीं दिया जाता है। इसके अलावा Nuget GUI को कुछ गंभीर उन्नयन की आवश्यकता है। 1. इसकी सहज नहीं है, 2. पैकेज को प्रबंधित करने के लिए इसकी कड़ी मेहनत। 3. बहाल करने के लिए इसकी कड़ी मेहनत। 4. अनपेक्षित पैकेजों को डाउनलोड करना 5. कभी-कभी इसके pacakges को बहाल करने में सक्षम नहीं है
इगोर एन

मैं कुछ हद तक सहमत हूं, हालांकि मुझे लगता है कि यह वास्तव में कोई भी पैकेज मैनेजर नहीं है। लगता है जैसे वे nuget 3.0 के लिए गंभीर GUI उन्नयन पर काम कर रहे हैं: blog.nuget.org/20141112/nuget-3.0-preview.html
Wiebe Tijsma
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.