2011-06-30 6 views
73

Czy istnieje sposób na zrobienie pakietu NuGet przy użyciu kodu skompilowanego w trybie wydania? Czy jest jakiś powód, dla którego powinienem publikować (udostępniać lokalnie, w tym przypadku) pakiety skompilowane w trybie debugowania?Pakowanie projektów NuGet skompilowanych w trybie wydania?

Za każdym razem, gdy wywołuję nuget pack z mojego katalogu projektu, gdzie mam plik Nuspec poniżej, na kodzie mam tylko skompilowany w trybie wydania, narzeka na nie znalezienie DLL w folderze debugowania ("\bin\Debug\SomeProject.dll"). Jeśli skompiluję go w trybie debugowania, pliki te są tam i pakują je tak, jak powinny.

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata> 
     <id>$id$</id> 
     <version>$version$</version> 
     <authors>$author$</authors> 
     <owners>$author$</owners> 
     <iconUrl>http://somewhere/project.png</iconUrl> 
     <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <description>$description$</description> 
    </metadata> 
</package> 

Odpowiedz

131

Można go rozwiązać tak: NuGet.exe pack Foo.csproj -Prop Configuration=Release (the reference).

+7

Dla każdego, kto chce opowiadać krótko z linku (dobry odczyt), nastąpiła zmiana z wersji 1.3 do wersji 1.4, która pochodzi z domyślnej wersji Release to default, która została usunięta z ustawień projektu, można modyfikować tylko bezpośrednio w pliku projektu (brak opcji VS GUI). Aby uniknąć zmiany właściwości wiersza poleceń dla wszystkich przyszłych wywołań 'nuget pack', edytuj plik XML projektu w swoim ulubionym edytorze tekstu. – patridge

+2

Czy istnieje sposób na spakowanie wersji Release i Debugowania w jednym pakiecie, a następnie mój projekt będzie automatycznie używał wersji debugowania i wersji Release w zależności od tego, czy jestem w konfiguracji Debug vs. Release Solution? –

+0

@JD: O ile mi wiadomo, nie jest to możliwe, ale myślałem, że przyczyni się to do nuget. Czy możesz wyjaśnić, w jakim scenariuszu potrzebujesz tej funkcji? Kiedy będzie pomocny? – Giorgi

14

Jeśli używasz zdarzenia post-build i chcesz utworzyć pakiet, czy za pomocą Debug lub Release konfiguracji można skonfigurować zdarzenie poleceń post-build tak:

"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName) 
1

Aby Nuget automatycznie korzystać tryb po uruchomieniu nuget pack Release, wykonaj następujące czynności:

  1. Otwórz plik .csproj w edytorze tekstowym.
  2. Znajdź następujący wiersz:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    
  3. W tej linii, wymień Debug z Release.
  4. Zapisz zmiany.