NuGet dla rozwiązań z wieloma projektami

Załóżmy, że mam rozwiązanie z 3 projektami:

  • Rdzeń
  • UI
  • testy

Niektóre pakiety NuGet, których używam, będą miały zastosowanie do wszystkich 3 projektów. Niektóre będą po prostu stosować się do interfejsu użytkownika i testów, a niektóre będą po prostu stosować się do testów (jak NUnit).

Jaki jest właściwy sposób skonfigurowania tego za pomocą NuGet?

  1. Czy powinienem użyć "Add Library Package Reference" we wszystkich trzech projektach, kiedy będę potrzebował referencji?
  2. Czy powinienem użyć "Dodaj bibliotekę Package Reference " kiedy po raz pierwszy potrzebuję pakietu, a następnie użyć Add Reference->Browse for next usages?

W obu przypadkach, ile pakietów.config pliki, które powinienem mieć?

 139
Author: Paul Stovell, 2011-03-24

6 answers

Dla każdego, kto natknie się na to, teraz jest następująca opcja:

Kliknij prawym przyciskiem myszy swoje rozwiązanie > Zarządzaj pakietami NuGet dla rozwiązania...

... Lub:

Narzędzia > Menedżer pakietów bibliotek > Zarządzaj pakietami NuGet dla rozwiązania...

I jeśli przejdziesz do obszaru zainstalowane pakiety, możesz "zarządzać" pojedynczym pakietem w każdym projekcie w rozwiązaniu.

 222
Author: Jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-09 14:39:06

Możesz użyć konsoli do kierowania wielu projektów

Tools > Library Package Manager > Package Manager Console

Następnie użyj tego polecenia

Get-Project PROJECT-NAMES-WITH-COMMAS | Install-Package PACKAGENAME

Na przykład

Get-Project Core,UI | Install-Package FluentDateTime
 71
Author: Simon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-06 06:03:06

Ta słodka transakcja działa dla mnie:

PM> Get-Project -all | where {$_.Name -match "Songhay.Silverlight" -and
    $_.Name -notmatch "ApplicationLoader" -and $_.Name -notmatch ".Xml"}
    | ForEach-Object {Install-Package MvvmLight -project $_.Name}
 18
Author: rasx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-04 19:34:15

Jeśli chcesz zainstalować pakiet w wielu rozwiązaniach, napisałem do tego poręczny skrypt Powershell, zobacz Tutaj .

Możesz nawet filtrować polecenie Get-Project -All i kierować pod-zestaw listy projektów.

 12
Author: Aaron Powell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-20 04:21:09

Powinieneś użyć "Add Library Package Reference" dla wszystkich Twoich zewnętrznych bibliotek w każdym projekcie w Twoim rozwiązaniu. Skończysz z paczką.config na projekt.

Jednak pakiet zostanie pobrany tylko raz i ponownie wykorzystany lokalnie dla wszystkich innych projektów.

 8
Author: Nekresh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-24 12:11:33

W Package Manager Console możesz napisać następującą komendę :

Get-Project -all | ForEach-Object {Get-Package -ProjectName $_.Name -filter 
PACKAGE_NAME} | where-object { $_.id -eq 'PACKAGE_NAME' } | Install-Package 
PACKAGE_NAME -Version VERSION

Możesz użyć tego polecenia również do instalacji lub aktualizacji (Update-Package)

 0
Author: Dark_Knight,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-02 10:19:56