2013-03-05 14 views
13

Chciałbym wstępnie skompilować witrynę ASP.NET MVC 4, ale w roli Azure Web Role. To szczególnie miłe, jak to łapie błędy widoku cshtml.Prekompilacja projektu ASP.NET MVC na platformie Azure (nie w przypadku wdrożenia sieci Web)

Można to łatwo zrobić przy pomocy Web Deploy, po prostu zaznaczając kilka odpowiednich pól w Opublikuj -> Opcje publikowania plików.

Ale jeśli masz więcej niż 1 wystąpienie WebRole, nie będziesz używać Web Deploy. I nie widzę żadnych opcji w ustawieniach projektu (na kartach Kompilacja lub Pakowanie/Publikuj), aby określić opcje kompilacji prekompilacji.

Czy jest jakiś sposób, w jaki sposób mogę określić opcje prekompilacji na poziomie projektu? Nie przepadam za żadnymi opcjami, które wymagałyby opuszczenia przepływu pracy, aby móc publikować na platformie Azure za pomocą prostej (ale wolnej) opcji "Publikuj w Windows Azure" (tzn. Nie interesuje mnie konieczność ręcznego przesłać pakiet chmury azure, wcale nie).

+0

@JWendel Znalazłem to: http://msdn.microsoft.com/en-us/library/ms229863(v=vs.100).aspx. Jedną z opcji jest: "-u", opisane jako: "Określa, że ​​Aspnet_compiler.exe powinien utworzyć skompilowaną aplikację, która umożliwia późniejsze aktualizacje zawartości, takie jak strony .aspx." Jeszcze go nie wypróbowałem i czy umieściłbyś to w zakładce "Buduj wydarzenia" -> "Pre-build event-line-line"? –

+1

Niezupełnie Andrew, przepraszam. Znalazłem to: Razor Generator, ale jest to radykalny krok do porównania i musiałem zrobić duże, nieuporządkowane czyszczenie po zainstalowaniu, nagle wszystkie moje widoki miały problemy (np. Kod dynamiczny, nawet ViewBag, rzucał błędy). –

Odpowiedz

0

Czy sprawdziłeś właściwości projektu Azure dla swojej aplikacji? Kliknij prawym przyciskiem myszy rolę sieci i kliknij Właściwości. Myślę, że może to prekompilować opcje, jeśli się nie mylę.

+1

Dzięki Albert, ale jak już powiedziałem: "Nie widzę żadnych opcji w ustawieniach projektu (na kartach Kompilacja lub Pakowanie/Publikuj), aby określić opcje kompilacji wstępnej." Aby było jasne, mam na myśli właściwości projektu ASP.NET MVC.Na twoją sugestię, na wypadek, gdybyś miał na myśli to, nie sprawdziłem ustawienia usługi w chmurze, ale nic nie znalazłem. W każdym razie dzięki. –

6

Poniższe może nie być wszystkim, czego się zapragnie, i życzę zespołowi Visual Studio dodawania prostych ustawień projektu interfejsu użytkownika, aby zrobić to samo (co może być bardzo banalnym zadaniem), ale oto sposób, który znalazłem od zadania tego pytania, aby skompilować pliki maszynki cshtml. Niestety jednak dzieje się to przy każdej kompilacji, która jest naprawdę wolniejsza, ale jeśli ustawisz to tylko na Release, wtedy jest to dobry kompromis:

Przejdź do swojego folderu projektu (kliknij prawym przyciskiem myszy projekt w VS, -> Otwórz Folder ...), znajdź plik .csproj, otwórz go w Notatniku (++, oczywiście), a następnie znajdź kilka PropertyGroup s w katalogu głównym xml ("Projekt") a PropertyGroup z tym warunkiem, który określa ustawienia specyficzne tylko trybu wyzwalania migawki (jest inny dla debugowania, które można zrobić to samo on):

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    <MvcBuildViews>true</MvcBuildViews> 
    <NoWarn>162, 168, 169, 219, 414, 612, 618, 649, 1591</NoWarn> 
    </PropertyGroup> 

Wystarczy dodać element MvcBuildViews (lub zmieniać z fa lse, jeśli już istnieje) i upewnij się, że wartość jest prawdziwa, i nagle zauważysz, że każda kompilacja zajmuje dużo więcej czasu [wstaw emotikonę z emotikonem tutaj]. Ale dostajesz kompilację swojego kodu brzytwy, będzie ona łapała błędy tak, jakbyś tego chciała, bardzo miło. Zespół ma już to zapakowane, dziwne, że nie dodają opcji UI do ustawień projektu MVC.

Domyślam się, że to odpowiada na moje oryginalne pytanie: "Czy jest jakiś sposób, w jaki sposób mogę określić opcje prekompilacji na poziomie projektu?" Znalazłem odpowiedź, którą myślę gdzieś w Internecie, nie pamiętam, gdzie teraz, i jestem pewien, że jest ona również w innym miejscu. Dziękuję Davidowi za ponowne rzucenie światła na to pytanie.

Powiązane problemy