Wyklucz pliki z witryny internetowej publikuj w Visual Studio

Czy mogę wykluczyć folder lub pliki, gdy publikuję stronę internetową w Visual Studio 2005? Mam różne zasoby, które chcę mieć pod ręką w Eksploratorze rozwiązań, takie jak alternatywne pliki konfiguracyjne dla różnych środowisk, ale tak naprawdę nie chcę publikować ich na serwerze. Czy jest jakiś sposób na ich wykluczenie? Podczas korzystania z innych typów projektów, takich jak a .DLL assembly, mogę ustawić właściwość Build Action pliku na "None" i jego właściwość Copy to Output Directory na "do not copy". Nie mogę Znajdź podobne ustawienia plików w witrynie internetowej.

Jeśli IDE nie oferuje tej funkcji, czy ktoś ma dobrą technikę obsługi takich plików?

Author: Keith, 2009-03-16

8 answers

Jeśli możesz zidentyfikować pliki na podstawie rozszerzenia, możesz skonfigurować to za pomocą znacznika buildproviders w sieci.config . Dodaj rozszerzenie i zmapuj je do ForceCopyBuildProvider. Na przykład, aby skonfigurować .pliki xml, które mają być skopiowane za pomocą akcji publikuj, wykonasz następujące czynności:

<configuration>...
    <system.web>...
        <compilation>...
            <buildProviders>
                <remove extension=".xml" />
                <add extension=".xml" type="System.Web.Compilation.ForceCopyBuildProvider" />
            </buildProviders>

Aby nie skopiować danego pliku, zrobiłbyś to samo, ale użyłbyś systemu.Www.Kompilacja.IgnoreFileBuildProvider jako typ.

 28
Author: Chris Hynes,
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
2014-02-21 18:01:53

Możesz wykluczyć foldery i pliki, dodając elementy ExcludeFilesFromDeployment i ExcludeFoldersFromDeployment do pliku projektu (.csproj,vbproj, itp.). Dodaj je w odpowiednim PropertyGroup, Jak pokazano poniżej:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
  ... 
  <ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment> 
  <ExcludeFilesFromDeployment>**\.svn\**\*.*</ExcludeFilesFromDeployment>
  <ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment> 
</PropertyGroup>

Symbole wieloznaczne są obsługiwane.

W powyższym przykładzie:

  • pierwszy ExcludeFilesFromDeployment wyklucza plik1.aspx (w katalogu głównym projektu) i Folder2\File2.aspx (Folder2 jest w katalogu głównym projektu)
  • drugi ExcludeFilesFromDeployment wyklucza wszystkie pliki w dowolnym folderze nazwane .svn i każdy z jego podfolderów
  • Folder 1 (w katalogu głównym projektu) i Folder 2\Folder 2A (Folder 2 znajduje się w katalogu głównym projektu)

Aby uzyskać więcej informacji zobacz Web Deployment: wyłączanie plików i folderów za pomocą pliku projektu aplikacji internetowej

 107
Author: Keith,
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-03-07 18:26:05

O dziwo odpowiedzi na Visual Studio 2012 nie ma:

  • Odpowiedź z zielonym znacznikiem nie jest odpowiedzią.

  • Najwyższa" podwyższona " odpowiedź odwołuje się do artykułu z 2010 roku i mówi, że musisz edytować plik projektu csproj, który jest teraz nieprawidłowy. Dodałem element XML Exludefoldersfromdeployment do mojego pliku Visual Studio 2012 csproj i nic nie zrobił, element został uznany za nieprawidłowy, to dlatego, że Exludefoldersfromdeployment ma zostały przeniesione do.wygląda na to plik pubxml.

Dla aplikacji internetowych i stron internetowych edytujesz .plik pubxml!

Możesz śledzić moją odpowiedź lub wypróbować ten poradnik, który znalazłem później: http://www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-structure-on-iis-and-skip-deleting-it-with-msdeployskiprules.html#sthash.MSsQD8U1.dpbs

Tak, możesz to zrobić nie tylko dla projektów stron internetowych, ale także stron internetowych. I w 2011 roku, w ramach projektu Visual Studio, w ramach projektu Visual Studio, w ramach projektu Visual Studio, w 2012 roku, w ramach projektu Visual Studio, w 2013 roku, w ramach projektu Visual Studio, w 2014 roku, w ramach projektu Visual Studio.]}

W Twoim [mypublishwebsitename].plik pubxml, znaleziony w ~ / Properties / Publisprofiles dla projektów aplikacji internetowych i ~ / App_Data / Publisprofiles dla stron internetowych, wystarczy dodać:

  <ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment> 
 <ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>

Jako dzieci do głównego <PropertyGroup> elementu w Twoim .plik pubxml. Nie trzeba dodawać nowego elementu nie chyba że wprowadzasz klucz do określonego typu kompilacji, takiego jak release lub debug.

ALE CZEKAJ!!!

Jeśli usuwasz pliki z serwera docelowego / docelowego z następującym ustawieniem w konfiguracji publikowania:

Tutaj wpisz opis obrazka

Następnie proces publikowania w Internecie usunie na twoim serwerze źródłowym/docelowym wszystko, co wykluczone, jak element, który określiłeś w <ExcludeFoldersFromDeployment> i <ExcludeFilesFromDeployment>!

MsDeploy Skip Rules to the rescue:

Pierwszy, Web Publish używa do publikowania czegoś innego niż MSBuild (nazywa się task IO lub coś w tym stylu), ale ma błąd i nie rozpoznaje reguł pomijania, więc musisz dodać do swojego .pubxml:

<PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>

trzymałbym <WebPublishMethod> we własnym <PropertyGroup>, można by pomyśleć, że można mieć tylko jeden <PropertyGroup> element w swoim .pubxml ale moje zasady przeskakiwania nie były wywoływane dopóki nie przeniosłem <WebPublishMethod> do własnego elementu <PropertyGroup>. Tak, szalone, ale fakt, że trzeba to wszystko zrobić, aby publikować w Internecie, aby wykluczyć, a także nie usunąć folder/plik na twoim serwerze jest szalony.

Teraz moje rzeczywiste Skiprule, Exludefolders i Exludefiles deklaracje w moim .pubxml:

<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
 <AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>

A teraz Skip Rules (<Target> jest dzieckiem <Project> w Twoim .pubxml): ( możesz zostawić <SkipAction> puste, aby pominąć wszystkie działania, ale nie testowałem tego i nie jestem pewien.

  <Target Name="AddCustomSkipRules">
    <Message Text="Adding Custom Skip Rules" />
    <ItemGroup>
      <MsDeploySkipRules Include="SkipConfigFolder">
        <SkipAction>Delete</SkipAction>
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_DestinationContentPath)\\Config</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
      <MsDeploySkipRules Include="SkipPhotosFolder">
        <SkipAction>Delete</SkipAction>
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_DestinationContentPath)\\Photos</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
      <MsDeploySkipRules Include="SkipWebConfig">
        <SkipAction>Delete</SkipAction>
        <ObjectName>filePath</ObjectName>
        <AbsolutePath>$(_DestinationContentPath)\\Web\.config</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
      <MsDeploySkipRules Include="SkipWebConfig">
        <SkipAction>Delete</SkipAction>
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_DestinationContentPath)\\Temp</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
    </ItemGroup>
  </Target>

I proszę, nie zapomnij uciec . w regułach pomijania ścieżki pliku z odwrotnym ukośnikiem.

 27
Author: Brian Ogden,
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
2015-05-26 14:09:22

Zmagałem się z tym samym problemem i w końcu pociągnąłem za spust przy konwersji strony internetowej do aplikacji internetowej. Kiedy to zrobiłem, dostałem wszystkie korzyści IDE, takie jak build action, i skompilowany szybciej do rozruchu (nie więcej walidacji strony internetowej...).

Krok 1: przekonwertuj swoją "witrynę internetową" na "aplikację internetową". Aby go przekonwertować, po prostu stworzyłem nową "aplikację internetową", zdmuchnął wszystkie pliki utworzone automatycznie, a następnie skopiował i wkleił moją stronę internetową. To zadziałało. Zwróć uwagę, że raport pliki muszą mieć ustawioną akcję budowania na " zawartość "zamiast"brak".

Krok 2: Teraz możesz ustawić dowolne pliki właściwości "Build Action".

Mam nadzieję, że to pomoże.

 11
Author: BlackjacketMack,
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-04-12 14:13:54

W Visual Studio 2013 znalazłem odpowiedź Keitha, dodanie elementu ExcludeFoldersFromDeployment do pliku projektu nie zadziałało(nie przeczytałem odpowiedzi Briana Ogdena, która tak mówi). Jednak znalazłem, że mogę wykluczyć plik tekstowy podczas publikowania w Visual Studio 2013, po prostu ustawiając następujące właściwości na samym pliku tekstowym:

1) Build Action: None

2) Kopiuj do katalogu wyjściowego: nie kopiuj

Początkowo próbowałem ustawić właściwość Copy na Output Directory samodzielnie, ale to nie działało, gdy akcja Build została ustawiona na wartość domyślną Content. Po ustawieniu akcji Build na brak, plik tekstowy nie był już kopiowany do folderu docelowego po opublikowaniu.

Aby wyświetlić te właściwości w interfejsie graficznym Visual Studio, w Eksploratorze rozwiązań kliknij prawym przyciskiem myszy plik, który chcesz wykluczyć, i wybierz Właściwości z menu kontekstowego.

 6
Author: Simon Tewsi,
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
2015-07-28 21:51:46

Myślę, że masz tu tylko dwie opcje:

  • Użyj "wyklucz z projektu" cecha. To nie jest idealne, ponieważ element projektu zostanie wyłączony z wszelkie zintegrowane operacje kontroli źródeł IDE. Musisz kliknąć ' Pokaż wszystko Przycisk pliki w oknie rozwiązania jeśli chcesz zobaczyć pliki w Solution Explorer, ale także pokazuje pliki i foldery, których nie masz zainteresowany.
  • Użyj skryptu zdarzenia post-build, aby usuń wszystkie elementy projektu, których nie masz chcesz być opublikowane (zakładając, że jesteś publikowanie do folderu lokalnego, a następnie wgrywanie na serwer).

Przechodziłam już przez to i nie mogłam wymyślić niczego naprawdę eleganckiego.

 5
Author: Kev,
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-16 21:30:12

Szukana funkcja istnieje, jeśli projekt jest tworzony jako"aplikacja internetowa". Web Site "projekty" to tylko zbiór plików, które są traktowane jako 1: 1 z tym, co jest wdrażane na serwerze WWW.

Pod względem funkcjonalności oba są takie same, jednak aplikacja internetowa kompiluje cały kod źródłowy do biblioteki DLL, zamiast nagich plików kodu źródłowego kopiowanych na serwer WWW i kompilowanych w razie potrzeby.

 1
Author: David,
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
2009-03-16 15:28:45

Dla Visual Studio 2017, webapp Publish , najpierw Utwórz Standardowy profil publikowania systemu plików. Przejdź do folderu App_Data \ Publisprofiles\ i edytuj nazwę [profilename].plik pubxml.

Dodaj

<ExcludeFilesFromDeployment>[file1.ext];[file2.ext];[file(n).ext]</ExcludeFilesFromDeployment>

Pod tagiem <PropertyGroup> Możesz podać ten znacznik tylko raz, w przeciwnym razie będzie on przyjmował tylko wartości ostatniego z nich.

Przykład:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>True</ExcludeApp_Data>
    <publishUrl>C:\inetput\mysite</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
    <ExcludeFilesFromDeployment>web.config;mysite.sln;App_Code\DevClass.cs;</ExcludeFilesFromDeployment>
  </PropertyGroup>
</Project>

Upewnij się, że Tag DeleteExistingFiles jest ustawiony na False

 0
Author: Nico Dreyer,
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-06-09 17:19:45