2013-02-08 12 views
5

Mam plik Nuget niespełniającego ze spec Plik:pliki Nuget są pakowane w niewłaściwych miejscach

<files> 
    <file src="content\App_Start\*" target="content\App_Start" /> 
    <file src="content\Views\*" target="content\Views" /> 
    <file src="content\web.config.transform" target="content" /> 
    <file src="readme.txt" target="" /> 
    </files> 

to kiedyś:

<files> 
    <file src="content\*" target="content" /> 
    <file src="readme.txt" target="" /> 
    </files> 

ale miał dziwne zachowanie, jak również (spefically App_Start nie został uwzględniony, ale dodatkowy folder treści był wciąż dodawany do widoków ... zobacz opis poniżej)

Sam projekt jest ułożony w formacie

\<root> 
|_ readme.txt 
|_ content 
     |_ Views 
     | |_ Home 
     |   |_ <viewname>.cshtml 
     |   |_ <viewname2>.cshtml 
     |_ App_Start 
      |_ <PreprocessFilename>.cs.pp 

Co wydaje się być dziwne zachowanie dla mnie jednak jest to, że Nuget paczka produkuje plik zip ze strukturą:

\<root> 
|_ readme.txt 
|_ content 
     |_ content 
     | |_ Views 
     |   |_ Home 
     |    |_ <viewname>.cshtml 
     |    |_ <viewname2>.cshtml 
     |_ App_Start 
     | |_ <PreprocessFilename>.cs.pp 
     |_ readme.txt 

więc w odniesieniu do Nuget pakowania ścieżek plików:

  • Dlaczego plik readme.txt jest duplikowany w dwóch miejscach?
  • Dlaczego w widokach znajduje się drugi podkatalog "content"? (podczas gdy App_Start nie jest)
  • Jak mogę zrobić kopię folderu z treścią dokładnie odzwierciedlającą faktyczną strukturę?
  • Jak mogę powrócić do dyrektywy <file src="content\*" target="content" /> aby plik nuspec więcej „utrzymaniu”

Jeśli jest to istotne, używam plik .csproj aby utworzyć pakiet.

+0

Alex - Czy kiedykolwiek zdarzyło Ci się wykryć problem z duplikatem pliku readme.txt? – Randy

Odpowiedz

0

Mam ten sam problem, udało mi się go obejść, ale trochę zaatakowałem IMO. Chciałbym zobaczyć lepsze rozwiązanie, aby mój projekt mógł mieć drzewo katalogowe, które zamierzam umieścić w ostatecznej paczce, ale potrzebowałem tego do dziś, aby .......

co musiałem zrobić, aby ominąć to było wyciągnąć wszystkie dir sub zawartości katalogu na zewnątrz i miejsce na poziomie root, a następnie w docelową do reż sub chciałem to skończyć w.

<file src="Scripts\" target="content\Scripts" /> 
0

zachowanie wydaje się, że kiedy spakuj plik .csproject nuget pack MyProject.csproj, najpierw rozmieści pakiet zgodnie ze strukturą projektu, a następnie zajrzysz do Nuspec po dodatkowe instrukcje. Ale wydaje się, że nie ma żadnego sposobu na usunięcie zawartości dodanej w poprzednim kroku podczas pakowania w projekcie.

Tak więc, jeśli domyślna struktura projektu prowadzi do niepożądanej zawartości w pakiecie, powinieneś polegać na pakowaniu bezpośrednio przez .nuspec. nuget pack MyProject.nuspec Następnie pobierze tylko zawartość, która jest określona w twoim Nuspec, w której możesz zdefiniować zawartość dokładnie w taki sposób, w jaki chcesz.

Jeśli masz duży projekt, który prawie mają strukturę chcesz, to może być wygodne, aby najpierw zbudować pakiet z projektu, należy Nuget Package Explorer wyodrębnić nuspec z tego pakietu, który później regulować, aby dopasować swoje potrzeby i że w końcu się spakowujesz. W ten sposób nie musisz budować go od zera.

Edit

Albo ... Można wykonać opakowanie z -Exclude parameter na .csproj gdzie można powiedzieć, że ignorowanie pewnych konkretnych plików i napisać specyfikację niestandardowej dla tych plików w .nuspec które będą czytaj automatycznie dla dodatkowych danych.

Osobiście uważam, że bardziej zwięzłe jest określenie .nuspec jako jedynej definicji pakietu.

Powiązane problemy