অনুগেটের জন্য প্যাকেজের অবস্থান পরিবর্তন করা কি সম্ভব?


283

আমার বেশিরভাগ প্রকল্পের জন্য আমার নীচের সম্মেলন রয়েছে:

/src
    /Solution.sln
    /SolutionFolder
        /Project1
        /Project2
        /etc..
/lib
    /Moq
        moq.dll
        license.txt
    /Yui-Compressor
        yui.compressor.dll
/tools
    /ILMerge
        ilmerge.exe

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


10
হ্যা হ্যা হ্যা! এটি হ'ল আমি যে প্রকল্পের কাঠামোটি ব্যবহার করি (বা খুব খুব কাছাকাছি), এবং আমি সবসময়ই ভাবছিলাম নুগেট এটি সমর্থন করতে পারে ...
নলডোরিন

নিম্নলিখিত উত্তরগুলির সাথে এটি কীভাবে করা যায় সে সম্পর্কে আমি বিশদে গিয়েছি: stackoverflow.com/a/19466173/564726 । এটি প্রায়শই সঠিকভাবে কাজ করার জন্য পুনরুদ্ধার কমান্ড থেকে সমাধানডির বিকল্পটি সরিয়ে ফেলতে হবে।
নিষ্ঠুরদেব

2
আমি আপনার শীর্ষ স্তরের ফোল্ডারগুলির মতো একই স্তরে .sln রেখেছি। :)
ইয়ান ওয়ারবার্টন

উত্তর:


242

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

http://nuget.codeplex.com/workitem/215

সম্পাদনা করুন: ফিল হ্যাকের মন্তব্য 10 ডিসেম্বর ২০১০ এ 11:45 পিএম এ দেখুন (কাজের আইটেম / উপরের লিঙ্কে)। সমর্থনটি আংশিকভাবে 1.0 এ প্রয়োগ করা হয়েছে, তবে নথিভুক্ত নয়।

@ ডাউলারের মতে: এর সাথে সমাধানের পাশে একটি নুগেট কনফিগ ফাইল যুক্ত করুন:

<settings>
<repositoryPath>{some path here}</repositoryPath>
</settings>

নেই একটি nuget প্যাকেজ প্যাকেজ ফোল্ডারের ওভাররাইড তৈরি করার জন্য।

সংস্করণ 2.1 এর জন্য আপডেট Update

আজাত মন্তব্য হিসাবে, এখন প্যাকেজের অবস্থানগুলি কীভাবে নিয়ন্ত্রণ করবেন সে সম্পর্কে অফিসিয়াল ডকুমেন্টেশন রয়েছে। 2.1 জন্য রিলিজ নোট একটি nuget.config ফাইলে নির্দিষ্ট করে নিম্নলিখিত কনফিগারেশন (বৈধ স্থান একটি বিবরণ কনফিগ ফাইল করা এবং কিভাবে হায়ারারকিকাল কনফিগারেশন মডেল কাজ জন্য প্রকাশ নোট দেখুন):

<configuration>
  <config>
    <add key="repositoryPath" value="C:\thePathToMyPackagesFolder" />
  </config>
  ... 
</configuration>

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

[...] যদি আপনার সমাধানের মূলের নীচে আপনার কোনও প্যাকেজ ফোল্ডার থাকে তবে অনুগেট নতুন জায়গায় প্যাকেজ স্থাপন করার আগে আপনাকে এটি মুছতে হবে।


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

5
কীভাবে nuget.config কাজ করে তার @dfowler এর সম্পূর্ণ বিবরণের জন্য রিভিউবোর্ড.নুপ্যাক.com/r/ 131 দেখুন See উদাহরণস্বরূপ, একটি বৈধ nuget.config এর মতো দেখাবে: <সেটিংস << পুনরায় পোস্টিপ্যাথি> লিবি </< রপোসিতিপথ> </ সেটিং>
লি হ্যারল্ড

5
docs.nuget.org/docs/release-notes/nuget-2.1 "প্যাকেজগুলির 'ফোল্ডারের অবস্থান নির্দিষ্ট করুন" অনুচ্ছেদ দেখুন
আজাত

1
আমি 2.1+ এ কাজ করার নতুন উপায়টি নিশ্চিত করতে পারি does কোডেপ্লেক্সে এটি সম্পর্কে বাগ রয়েছে: nuget.codeplex.com/workitem/2921
কেস

5
দ্বিতীয় সংস্করণটি আমার পক্ষে কাজ করে, আমি সর্বশেষ নুগেট ব্যবহার করি এবং এখন দুটি সমাধান একই রেপো ভাগ করতে পারে। আমি মনে করি এটি হয়ত কিছু লোকের জন্য কাজ করবে না কারণ তারা পরম পথ ব্যবহার করতে পারে? দেখে মনে হচ্ছে পরম বনাম আপেক্ষিক পথের বিষয়টি গুরুত্বপূর্ণ।
সিএসবা তোথ

63
  1. "Nuget.config" নামে একটি ফাইল তৈরি করেছেন।
  2. ফাইলটি আমার সলিউশন ফোল্ডারে যুক্ত করেছে

এটি আমার পক্ষে কার্যকর হয়নি:

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

এটি আমার জন্য কাজ করেছে:

<?xml version="1.0" encoding="utf-8"?>
<settings>
  <repositoryPath>..\ExtLibs\Packages</repositoryPath>
</settings>

একই অবস্থা. কনফিগারেশন> কনফিগারেশন কাজ করে না, তবে সেটিংস> সংগ্রহস্থলপথটি কাজ করে।
জিন রেডডিক

শুধু দ্বিতীয় সমাধান কাজ করে: docs.nuget.org/docs/reference/nuget-config-file
cheesemacfly

15
এটি আপনি ব্যবহার করছেন নুগেটের সংস্করণটির উপর নির্ভর করে।
ব্রোনমস্কি

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

2
এটি ভিসুয়াল স্টুডিও 2013 এর জন্য দুর্দান্ত কাজ করে তবে আমি যদি ভিজ্যুয়াল স্টুডিও 2015 ব্যবহার করছি তবে এটি এখনও স্লান ফাইলের নিকটে প্যাকেজ ফোল্ডারে প্যাকেজ ইনস্টল করে,
ফাহনাসির

40

এই পোস্টটি পড়ার জন্য কারও পক্ষে ঠিক আছে - উপরের উত্তরগুলির অগণিত বিষয়গুলি আমি এখানে বুঝতে পারি:

  1. .Nuget ফোল্ডারে nuget.config ফাইল আপেক্ষিক ওই ফোল্ডারে। এটি গুরুত্বপূর্ণ কারণ আপনার নতুন ফোল্ডারে যদি '../Packages' এর মতো কিছু থাকে যা এটি সর্বদা বাক্সের বাইরে চলে যায় put @ ব্রুস 14 হিসাবে উল্লেখ করা হয়েছে যে পরিবর্তে আপনার অবশ্যই '../../Packages' করুন

  2. আমি প্যাকেজ পুনরুদ্ধার সক্ষম না করে মানক অবস্থানের বাইরে প্যাকেজ ফোল্ডার সন্ধান করতে সর্বশেষতম নুগেট (২.৮.৫) পাই না could সুতরাং একবার আপনি প্যাকেজ পুনরুদ্ধার সক্ষম করুন তারপরে নিম্নলিখিত পরিবর্তনগুলি অবস্থান পরিবর্তন করার জন্য .nuget ফোল্ডারের ভিতরে nuget.config ফাইলের সাথে যুক্ত করা উচিত:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      ...
      <config>
        <add key="repositoryPath" value="..\..\Packages" />
      </config>
      ...
    </configuration>
  3. (এটি গুরুত্বপূর্ণ) আপনি যদি nuget.config ফাইলগুলির মধ্যে প্যাকেজ ফোল্ডারের অবস্থানে কোনও পরিবর্তন করেন তবে পরিবর্তনগুলি কার্যকর করার জন্য আপনাকে অবশ্যই ভিজ্যুয়াল স্টুডিও পুনরায় চালু করতে হবে বা সমাধানটি পুনরায় লোড করতে হবে


5
আমাকে বিশ্বাস করুন, আপনার # 3 পয়েন্টটি আমার দিনটি বাঁচিয়েছে। আমি আপনার # 3 পয়েন্টটি পড়ার আগে গত 3 ঘন্টা থেকে পাগল ছিলাম। : '(আপনাকে অনেক ধন্যবাদ ভাই!
Hellodear

24

ভিজুয়াল স্টুডিও 2015-এ নুগেট 3.2 এর একটি সমাধান:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <add key="repositoryPath" value="../lib" />
    </config>
</configuration>

প্যারেন্ট ফোল্ডারের জন্য ফরোয়ার্ড স্ল্যাশ ব্যবহার করা। সমাধান ফোল্ডারে উপরের ফাইল (nuget.config) সংরক্ষণ করুন।

রেফারেন্স এখানে পাওয়া যায়


পারফেক্ট! ভিজ্যুয়াল স্টুডিও 2015 এবং নিউজ সংস্করণ 3.2.0.10516 এর জন্য কাজ করা
আনন দেব

আপনার মনে হচ্ছে একটি ফরোয়ার্ড স্ল্যাশ বোঝানো হয়েছে .. তবে সমাধান যদি উইন্ডোতে থাকে তবে সম্ভবত যে ফরোয়ার্ড স্ল্যাশটি পিছনের দিকে পরিবর্তিত হয় বা সম্ভবত ফরোয়ার্ড স্ল্যাশ টাইপো ছিল এবং পিছনের দিকে বদলে যাওয়া উচিত।
জেরার্ড ওনিল

আমি 2015 এ আছি এবং আমার .. .. .. \ প্যাকেজগুলি এটিতে একটি ফোল্ডারে যেতে হবে।
ছড়া

1
../libএটি একটি ফরোয়ার্ড স্ল্যাশ, পিছনের স্ল্যাশ নয়। আপনি কোনটি বোঝাতে চান?
jpmc26

হ্যাঁ, এটি ঠিক ফরোয়ার্ড স্ল্যাশ। আপডেট উত্তর
ফুগান্ড

15

২.১ এর জন্য রিলিজ নোটে প্রস্তাবিত সমাধানটি বাক্সের বাইরে কাজ করে না। তারা কোডটি উল্লেখ করতে ভুলে গেছে:

internal string ResolveInstallPath()
{
    if (!string.IsNullOrEmpty(this.OutputDirectory))
    {
        return this.OutputDirectory;
    }
    ISettings settings = this._configSettings;

    ...
}

যা কাজ করতে বাধা দেয়। এটির সমাধানের জন্য আপনার নুগেট.টরজেটস ফাইলটি পরিবর্তন করতে হবে এবং 'আউটপুট ডিরেক্টরি' পরামিতি অপসারণ করতে হবে:

    <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch)</RestoreCommand>

সুতরাং এখন, আপনি যদি NuGet.config- এ কোথাও 'repositoryPath' কনফিগারেশন যুক্ত করেন (কনফিগার ফাইলগুলি রাখার জন্য বৈধ জায়গাগুলির বিবরণের জন্য প্রকাশিত নোটগুলি দেখুন), এটি সমস্ত প্যাকেজকে একক জায়গায় পুনরুদ্ধার করবে, তবে ... আপনার .csproj এখনও আপেক্ষিক পথ হিসাবে লিখিত সমাবেশগুলিতে ইঙ্গিত রয়েছে ...

আমি এখনও বুঝতে পারি না যে তারা প্যাকেজম্যানেজার পরিবর্তনের পরিবর্তে কেন কঠোর পথে চলেছে যাতে এটি প্যাকেজডিরের সাথে সম্পর্কিত ইঙ্গিতের রাস্তা যুক্ত করে। স্থানীয়ভাবে (আমার ডেস্কটপে) এবং বিল্ড এজেন্টে আমি বিভিন্ন প্যাকেজের লোকেশনগুলি ম্যানুয়ালি করি ।

<Reference Include="Autofac.Configuration, Version=2.6.3.862, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
  <Private>True</Private>
  <HintPath>$(PackagesDir)\Autofac.2.6.3.862\lib\NET40\Autofac.Configuration.dll</HintPath>
</Reference>

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

1
@ আফ্রিচকে: আপনি যদি তা করতে পারতেন তবে তা দুর্দান্ত হবে। ধন্যবাদ। কোন ধারণা কখন হতে পারে?
স্যাজটজ

11

শেন কিলোমিটারের উত্তর ছাড়াও, আপনি যদি নুগেট প্যাকেজ রিস্টোরটি সক্রিয় করে থাকেন তবে আপনি .nuget-ফোল্ডারে অবস্থিত NuGet.config নিম্নরূপে সম্পাদনা করুন:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <repositoryPath>..\..\ExtLibs\Packages</repositoryPath>
</configuration>

অতিরিক্ত ".. \" লক্ষ্য করুন, কারণ এটি .nuget-ফোল্ডার থেকে ব্যাকট্র্যাক করে সমাধান ফোল্ডারটি নয়।


9

এগুলির কোনও উত্তরই আমার পক্ষে কাজ করছে না (নুগেট ২.৮. some) কিছু টিপস অনুপস্থিত থাকায় এগুলি এখানে যুক্ত করার চেষ্টা করবে না কারণ এটি অন্যদের পক্ষে উপকারী হতে পারে।

নিম্নলিখিত উত্সগুলি পড়ার পরে:
https://docs.nuget.org/consume/NuGet-Config-
সেটিং https://github.com/NuGet/Home/issues/1346
এটি প্রদর্শিত হয়

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

যেমন

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
  <config>
    <add key="repositorypath" value="$/../../../Common/packages" />
  </config>
</configuration>

সিনট্যাক্স এর মতো সঠিক হবে তা নিশ্চিত করতে আপনি নিউগেট কমান্ডটিও ব্যবহার করতে পারেন:

NuGet.exe config -Set repositoryPath=$/../../../Common/packages -ConfigFile NuGet.Config

8

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

<configuration>
  <config>
    <add key="globalPackagesFolder" value="lib" />
  </config>
  ... 
</configuration>

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


আমি এই চেষ্টা করেছিলাম। আমি globalPackagesFolderআমার প্রকল্পের প্যাকেজ ফোল্ডারের কীটি সেট করেছি। আমি এর সাথে একটি একক প্যাকেজ যুক্ত করার চেষ্টা করেছি dotnet add package MyPackagenuget.exeসেই ফোল্ডারে 83 .NET প্যাকেজগুলির পুরো ফ্রেমওয়ার্কটি ডাউনলোড করে। এটাই আমার উদ্দেশ্য ছিল না। আমি কেবলমাত্র আমার স্থানীয়, উত্স-নিয়ন্ত্রিত প্যাকেজ ফোল্ডারে আমার একক মাইপ্যাকেজটি চেয়েছিলাম।
ওয়ালেস কেলি 15

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

1
অপর এক প্রশ্নের এই উত্তর অনুযায়ী: stackoverflow.com/a/47407399/4572240 "respositoryPath packages.config প্রকল্প, globalPackagesFolder PackageReference প্রকল্প জন্য ব্যবহার করা হয় জন্য ব্যবহার করা হয়"।
সিডারাইট জ্যাকওয়ার্ডেডেক্স

7

গৃহীত উত্তরের কনফিগারেশন ফাইলটি ভিএস ২০১২-এ আমার জন্য কাজ করে। তবে, আমার জন্য এটি কেবল তখন কাজ করে যখন আমি নিম্নলিখিতগুলি করি:

  1. ভিএস-তে একটি নতুন প্রকল্প তৈরি করুন
  2. প্রস্থান ভিএস - এটি গুরুত্বপূর্ণ বলে মনে হচ্ছে।
  3. প্রকল্প ফোল্ডারে কনফিগার ফাইলগুলি অনুলিপি করুন।
  4. ভিএস পুনরায় চালু করুন এবং প্যাকেজ যুক্ত করুন।

আমি যদি এই পদক্ষেপগুলি অনুসরণ করি তবে আমি একটি ভাগ করা প্যাকেজ ফোল্ডারটি ব্যবহার করতে পারি।


ভিএস পুনঃসূচনা হ'ল এটি কাজ করার একমাত্র উপায়। অনুমান করুন প্যাকেজ ম্যানেজার এটি ক্যাশে করে।
ফিলিপ করুন

6

প্যাকেজ-কনফিগের পরিবর্তে প্যাকেজ-রেফারেন্স ব্যবহার করে প্রকল্পগুলির পথ পরিবর্তন করার জন্য আপনাকে ব্যবহার করতে হবে globalPackagesFolder

Https://docs.microsoft.com/en-us/nuget/references/nuget-config-file থেকে

গ্লোবালপ্যাকেজফোল্ডার (কেবল প্যাকেজ রেফারেন্স ব্যবহার করে এমন প্রকল্পগুলি)

ডিফল্ট গ্লোবাল প্যাকেজ ফোল্ডারের অবস্থান। ডিফল্টটি হ'ল% ব্যবহারকারী প্রোফাইল% .নুগেট \ প্যাকেজ (উইন্ডোজ) বা ~ / .nuget / প্যাকেজ (ম্যাক / লিনাক্স)। প্রকল্প-নির্দিষ্ট nuget.config ফাইলগুলিতে একটি আপেক্ষিক পাথ ব্যবহার করা যেতে পারে। এই সেটিংটি NUGET_PACKAGES এনভায়রনমেন্ট ভেরিয়েবল দ্বারা ওভাররাইড করা হয়, যা অগ্রাধিকার নেয়।

repositoryPath (কেবল প্যাকেজ.কনফিগ)

ডিফল্ট S (সমাধানডির) / প্যাকেজ ফোল্ডারের পরিবর্তে নুগেট প্যাকেজ ইনস্টল করার জন্য। প্রকল্প-নির্দিষ্ট nuget.config ফাইলগুলিতে একটি আপেক্ষিক পাথ ব্যবহার করা যেতে পারে। এই সেটিংটি NUGET_PACKAGES এনভায়রনমেন্ট ভেরিয়েবল দ্বারা ওভাররাইড করা হয়, যা অগ্রাধিকার নেয়।

<config>
    <add key="globalPackagesFolder" value="c:\packageReferences" />
    <add key="repositoryPath" value="c:\packagesConfig" />
</config>

আমি আমার সমাধান ফাইলের পাশে নিউগ্যাট কনফিগ রেখেছি এবং এটি কার্যকর হয়েছে।


5

আমি আরও একটি সামান্য জোয়ার আবিষ্কার করেছি যা সবেমাত্র আবিষ্কার করেছি। (এটি এতটা বেসিক হতে পারে যে কেউ এটি উল্লেখ করেন নি, তবে এটি আমার সমাধানের জন্য গুরুত্বপূর্ণ was) "প্যাকেজগুলি" ফোল্ডারটি আপনার .sln ফাইলের মতো একই ফোল্ডারে শেষ হয়।

আমরা আমাদের .sln ফাইলটি সরানো এবং তারপরে বিভিন্ন প্রকল্প এবং ভয়েলা সন্ধানের জন্য সমস্ত পথ ভিতরে insideুকিয়ে দিয়েছি! আমাদের প্যাকেজ ফোল্ডারটি যেখানে শেষ হয়েছিল সেখানেই শেষ হয়েছে।


4

ভিএস 2017 এর জন্য আপডেট করুন:

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

ভিএস 2015 এবং তার আগেরটি

অন্যান্য উত্তরের একটি টিপ (বিশেষত এটি ):

নিউগেট প্যাকেজ ফোল্ডারের অবস্থান কনফিগারেশনের মাধ্যমে পরিবর্তন করা যেতে পারে, তবে ভিজ্যুয়াল স্টুডিও এখনও এই ফোল্ডারে তুলনামূলকভাবে সমাবেশগুলি উল্লেখ করে:

<HintPath>..\..\..\..\..\..\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath>

এটি কার্যকর করার জন্য (আরও ভাল সমাধান না হওয়া পর্যন্ত) আমি ভার্চুয়াল ড্রাইভ তৈরি করতে সাব- কমান্ডটি ব্যবহার করেছি যা প্যাকেজ ফোল্ডারের নতুন অবস্থানে নির্দেশ করে:

subst N: C:\Development\NuGet\Packages

এখন নতুন নিউগেট প্যাকেজ যুক্ত করার সময়, প্রকল্পের রেফারেন্সটি এর নিখুঁত অবস্থানটি ব্যবহার করে:

<HintPath>N:\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath>

বিঃদ্রঃ:

  1. এই জাতীয় ভার্চুয়াল ড্রাইভ পুনঃসূচনা হওয়ার পরে মুছে ফেলা হবে, সুতরাং আপনি এটি পরিচালনা করেছেন তা নিশ্চিত হয়ে নিন
  2. প্রকল্প ফাইলগুলিতে বিদ্যমান রেফারেন্সগুলি প্রতিস্থাপন করতে ভুলবেন না।

আজও কি তাই? মানে আমরা নতুন যুক্ত হওয়া প্যাকেজগুলির জন্য অশ্লীল অবস্থান ব্যবহার করতে পারি না? এই ভার্চুয়াল ড্রাইভ সমাধানটি আমার কাছে জটিল মনে হচ্ছে
ব্যাটমাসি

হ্যাঁ, কিছুই এখনও পরিবর্তিত হিসাবে একটি কেস
কামারে

2
আমি আসলে একটি আপেক্ষিক পাথ পছন্দ করি - এই পদ্ধতিতে বিভিন্ন বিকাশকারীদের কোডের জন্য বিভিন্ন মূল অবস্থান থাকলে উত্স নিয়ন্ত্রণে কোনও বিরোধ নেই।
jbyrd

আমি অবাক হয়েছি কেন আপনি <HintPath>$(SolutionDir)\packages\SomeAssembly\lib\net45\SomeAssembly.dll</HintPath> ব্যবহারের পরিবর্তে তা করতে পারবেন নাsubst
বিনোদ শ্রীবাস্তব

আমি চেয়েছিলাম যে সমস্ত প্যাকেজগুলি সমাধান হিসাবে নয়, একক স্থানে রয়েছে
কামারে

3

সবেমাত্র নুগেট ২.৮.৩ দিয়ে আপডেট হচ্ছে। ইনস্টল করা প্যাকেজগুলির অবস্থান পরিবর্তন করতে, আমি ডান ক্লিক সমাধান থেকে প্যাকেজ পুনরুদ্ধার সক্ষম করেছি। নিউগেট.কনফিগ সম্পাদনা করেছে এবং এই লাইনগুলি যুক্ত করেছে:

  <config>
    <add key="repositorypath" value="..\Core\Packages" />
  </config>

তারপরে সমাধানটি পুনরায় তৈরি করে, এটি আমার পছন্দসই ফোল্ডারে সমস্ত প্যাকেজগুলি ডাউনলোড করে এবং স্বয়ংক্রিয়ভাবে উল্লেখগুলি আপডেট করে updated


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