Miałem kilka Contentzmian w Nones. Myślę, że stało się to, kiedy zmieniłem nazwy plików z .ascx na .cshtml podczas konwersji na Razor. Ręczna zmiana ich z powrotem rozwiązała niektóre problemy z wdrażaniem. Cieszę się, że to znalazłem.
Chris,
Odpowiedzi:
135
W artykule MSDN dotyczącym właściwości akcji kompilacji wyjaśniono różnice.
Brak - plik nie jest uwzględniony w grupie wyjściowej projektu i nie jest kompilowany w procesie kompilacji. Przykładem jest plik tekstowy zawierający dokumentację, na przykład plik Readme.
Zawartość - plik nie jest skompilowany, ale znajduje się w grupie wyjściowej Treść. Na przykład to ustawienie jest wartością domyślną dla pliku .htm lub innego rodzaju pliku internetowego.
Dzięki, miałem problem ze znalezieniem tego odniesienia.
Emmett
Pomocne, ale po co w ogóle mieć element „Brak”, skoro plik nie ma być uwzględniany w wyniku? Jaki jest sens?
JimH44
1
@ JimH44 Elementy <None> są często używane do kopiowania plików do katalogu wyjściowego, mimo że domyślnie nie znajdują się w grupie wyjściowej . Jeśli wybierzesz „Kopiuj do katalogu wyjściowego” -> „Kopiuj zawsze” dla pliku <Brak>, spowoduje to skopiowanie go i zobaczysz, że wpis dodany do pliku .csproj projektu będzie miał wpis <Brak> dla pliku.
Conspicuous Compiler
3
Zatem jaka jest różnica między plikiem <Brak> z opcją „Kopiuj do katalogu wyjściowego” -> „Zawsze kopiuj” a plikiem <Content> z plikiem „Kopiuj do katalogu wyjściowego” -> „Zawsze kopiuj”?
hashtable
30
Jedna różnica polega na sposobie ich publikacji; Elementy „Brak” nie są uwzględniane w publikacji, elementy „Treść” tak. na przykład w oknie dialogowym „Pliki aplikacji” na karcie Publikuj.
Nie prawda. Przynajmniej w nowym kliencie dot net cli. jeśli masz element zadeklarowany jako Brak z CopyToOutputDirectoryustawionym na trueto, zostanie opublikowany wdotnet publish
disklosr
13
Nie jestem pewien w 100% (przeczytałem opis właściwości Build Action w witrynie MSDN ), ale samo skopiowanie tej odpowiedzi z MSDN do StackOverflow nie odpowiada mi całkowicie na to pytanie.
Różnica między brakiem a treścią ma wpływ tylko na projekty internetowe. Dla projektu wiersza poleceń, projektu WinForm lub projektu UnitTest (w moim przypadku) itp. None i Content nie mają innego zachowania.
MSDN: „grupa wyjściowa projektu” lub „grupa wyjściowa treści” tylko terminy używane w projekcie sieci Web, prawda?
Jak mówisz, wydaje się Nonevs Contentma wpływ tylko na krok publikacji, a nie na krok kompilacji . Wydaje się, że krok kompilacji CopyToOutputDirectorymożna ustawić na albo i to kontroluje, czy plik jest kopiowany przez krok kompilacji. Wydaje się również dziwne, że domyślnie szablony T4 są dodawane jako Contentelementy, a nie Noneelementy.
Christopher King
8
W mojej sytuacji mój plik MSBuild zawierał ItemGroupzasoby obrazu, które wyglądały następująco:
Podczas gdy mój projekt był w porządku, zacząłem się zastanawiać, dlaczego mam w sobie mieszankę elementów Contenti Nonetypów elementów ItemGroup. Ten artykuł MSDN (dotyczący programu Visual Studio 2010) dał mi wskazówki, których szukałem:
Zauważ, że kiedy edytor zasobów dodaje obraz, ustawia Build Action na None , ponieważ plik resx odwołuje się do pliku obrazu. W czasie kompilacji obraz jest pobierany do pliku Resources utworzonego z pliku resx. Obraz można następnie łatwo uzyskać za pomocą automatycznie wygenerowanej klasy o jednoznacznie określonym typie dla pliku resx. Dlatego nie należy zmieniać tego ustawienia na zasób osadzony , ponieważ spowodowałoby to dwukrotne uwzględnienie obrazu w zestawie.
Rozwiązanie: dzięki tym wskazówkom za pomocą edytora tekstu zmieniłem Contentelementy typu elementu na None.
Aby zapoznać się z omówieniem elementów programu MSBuild, zobacz ten artykuł MSDN .
Mam projekt, który nie zawiera żadnych elementów do kompilacji (przechowuje html i javascript dla testów jednostkowych jaśminu).
Pewnego dnia moje rozwiązanie (które zawierało wspomniany projekt) przestało się kompilować, mówiąc: „Element docelowy„ Build ”nie istnieje w projekcie”.
Dodałem import, aby wprowadzić kompilator, który działał dobrze na moim komputerze, ale nie udało się użyć msbuild na serwerze kompilacji.
Nie potrzebujesz Brak w pliku projektu szablonu, aby uwzględnić pliki zdefiniowane w .vstemplate, w przeciwnym razie zostaną one utracone w procesie tworzenia i tłumaczenia. Zostają pozostawione w folderze tymczasowym, którego używa do zbudowania wszystkiego, a następnie wkrótce zostaną usunięte.
W moim przypadku .Pubxml jest jednym z tych plików na liście Brak . Nie jest przeznaczony do tworzenia rozwiązań ani jako plik statyczny do projektu internetowego. Jednak aby opublikować witrynę na platformie Azure, konfiguracje są obecne w tym.
Zgodnie z artykułem firmy Microsoft są to główne typy, które widzimy wśród tagów plików .csproj :
Brak - plik nie jest uwzględniony w grupie wyjściowej projektu i nie jest kompilowany w procesie kompilacji. Przykładem jest plik tekstowy zawierający dokumentację, na przykład plik Readme.
Kompiluj - plik jest kompilowany do danych wyjściowych kompilacji. To ustawienie jest używane dla plików kodu.
Zawartość - plik nie jest skompilowany, ale znajduje się w grupie wyjściowej Treść. Na przykład to ustawienie jest wartością domyślną dla pliku .htm lub innego rodzaju pliku internetowego.
Zasób osadzony - ten plik jest osadzony w danych wyjściowych kompilacji głównego projektu jako plik DLL lub plik wykonywalny. Zwykle jest używany w przypadku plików zasobów.
Proszę o komentarz tutaj, jeśli coś jest mylące lub niejasne, samo głosowanie negatywne nie pomoże mi lepiej tego poprawić. Z góry dziękuję.
krishna kanth,
1
Często pojawia się błąd: nazwa elementu „None” dla include „Properties \ PublishProfiles \ FolderProfile.pubxml” powinna mieć wartość „Content”. w moim projekcie Asp.Net na Bamboo i czasami ponownie uruchomię kompilację, aby po prostu to naprawić, więc nie wiem, na czym dokładnie polega problem
Bochen Lin
Cześć @BochenLin, szczegóły, o których tu wspomniałeś, są trochę skąpe. Możesz spróbować podać więcej szczegółów tutaj lub opublikować nowe pytanie z pełnymi szczegółami problemu i zrzutem ekranu, jeśli to możliwe [a następnie udostępnij link do pytania tutaj].
krishna kanth
0
Pliki zawartości nie są zawarte w kompilacji, ale są uwzględniane w publikacji.
Żadne pliki nie są uwzględniane w kompilacji ani publikowaniu, chyba że zostały skonfigurowane w ten sposób przez Ciebie. Na przykład ustawienie „Kopiuj do katalogu wyjściowego” na „Zawsze” lub „Nowsze” spowoduje, że zostaną one uwzględnione zarówno w kompilacji, jak i w publikacji.
Content
zmian wNone
s. Myślę, że stało się to, kiedy zmieniłem nazwy plików z .ascx na .cshtml podczas konwersji na Razor. Ręczna zmiana ich z powrotem rozwiązała niektóre problemy z wdrażaniem. Cieszę się, że to znalazłem.Odpowiedzi:
W artykule MSDN dotyczącym właściwości akcji kompilacji wyjaśniono różnice.
źródło
Jedna różnica polega na sposobie ich publikacji; Elementy „Brak” nie są uwzględniane w publikacji, elementy „Treść” tak. na przykład w oknie dialogowym „Pliki aplikacji” na karcie Publikuj.
źródło
CopyToOutputDirectory
ustawionym natrue
to, zostanie opublikowany wdotnet publish
Nie jestem pewien w 100% (przeczytałem opis właściwości Build Action w witrynie MSDN ), ale samo skopiowanie tej odpowiedzi z MSDN do StackOverflow nie odpowiada mi całkowicie na to pytanie.
Różnica między brakiem a treścią ma wpływ tylko na projekty internetowe. Dla projektu wiersza poleceń, projektu WinForm lub projektu UnitTest (w moim przypadku) itp. None i Content nie mają innego zachowania.
MSDN: „grupa wyjściowa projektu” lub „grupa wyjściowa treści” tylko terminy używane w projekcie sieci Web, prawda?
źródło
None
vsContent
ma wpływ tylko na krok publikacji, a nie na krok kompilacji . Wydaje się, że krok kompilacjiCopyToOutputDirectory
można ustawić na albo i to kontroluje, czy plik jest kopiowany przez krok kompilacji. Wydaje się również dziwne, że domyślnie szablony T4 są dodawane jakoContent
elementy, a nieNone
elementy.W mojej sytuacji mój plik MSBuild zawierał
ItemGroup
zasoby obrazu, które wyglądały następująco:Podczas gdy mój projekt był w porządku, zacząłem się zastanawiać, dlaczego mam w sobie mieszankę elementów
Content
iNone
typów elementówItemGroup
. Ten artykuł MSDN (dotyczący programu Visual Studio 2010) dał mi wskazówki, których szukałem:Rozwiązanie: dzięki tym wskazówkom za pomocą edytora tekstu zmieniłem
Content
elementy typu elementu naNone
.Aby zapoznać się z omówieniem elementów programu MSBuild, zobacz ten artykuł MSDN .
źródło
Mam projekt, który nie zawiera żadnych elementów do kompilacji (przechowuje html i javascript dla testów jednostkowych jaśminu).
Pewnego dnia moje rozwiązanie (które zawierało wspomniany projekt) przestało się kompilować, mówiąc: „Element docelowy„ Build ”nie istnieje w projekcie”.
Dodałem import, aby wprowadzić kompilator, który działał dobrze na moim komputerze, ale nie udało się użyć msbuild na serwerze kompilacji.
Następnie zmieniłem linię z
do
i działał również na serwerze kompilacji.
źródło
Nie potrzebujesz Brak w pliku projektu szablonu, aby uwzględnić pliki zdefiniowane w .vstemplate, w przeciwnym razie zostaną one utracone w procesie tworzenia i tłumaczenia. Zostają pozostawione w folderze tymczasowym, którego używa do zbudowania wszystkiego, a następnie wkrótce zostaną usunięte.
źródło
W moim przypadku .Pubxml jest jednym z tych plików na liście Brak . Nie jest przeznaczony do tworzenia rozwiązań ani jako plik statyczny do projektu internetowego. Jednak aby opublikować witrynę na platformie Azure, konfiguracje są obecne w tym.
Zgodnie z artykułem firmy Microsoft są to główne typy, które widzimy wśród tagów plików .csproj :
źródło
Pliki zawartości nie są zawarte w kompilacji, ale są uwzględniane w publikacji.
Żadne pliki nie są uwzględniane w kompilacji ani publikowaniu, chyba że zostały skonfigurowane w ten sposób przez Ciebie. Na przykład ustawienie „Kopiuj do katalogu wyjściowego” na „Zawsze” lub „Nowsze” spowoduje, że zostaną one uwzględnione zarówno w kompilacji, jak i w publikacji.
źródło