Mogę uruchomić moją aplikację Asp.Net MVC 2 bez problemu na moim komputerze lokalnym. Po prostu uruchom / debuguj.
Ale jeśli już go zbudowałem, nie mogę go opublikować! Muszę wyczyścić rozwiązanie i ponownie je opublikować. Wiem, że to nie jest krytyczne dla systemu, ale jest naprawdę denerwujące. „Publikowanie jednym kliknięciem” to nie „czyste rozwiązanie, a następnie publikowanie jednym kliknięciem”
Dokładny błąd jest następujący:
Błąd 11 Błędem jest użycie sekcji zarejestrowanej jako allowDefinition = 'MachineToApplication' poza poziomem aplikacji. Ten błąd może być spowodowany tym, że katalog wirtualny nie jest skonfigurowany jako aplikacja w usługach IIS.
Podejrzewam, że ma to coś wspólnego z Web.Config w folderze Views, ale dlaczego dopiero po wcześniejszym skompilowaniu. Pamiętaj, że po opublikowaniu aplikacja działa dobrze.
Odpowiedzi:
miałem ten sam problem z moimi aplikacjami MVC. to było frustrujące, ponieważ nadal chciałem, aby moje widoki były sprawdzane, więc nie chciałem wyłączać MvcBuildViews
na szczęście trafiłem na post, który dał mi odpowiedź. zachowaj MvcBuildViews jako true , możesz dodać następujący wiersz poniżej w pliku projektu:
I niech ten folder nie będzie w folderze twojego projektu. Pracuje dla mnie. To nie jest idealne rozwiązanie, ale na razie jest dobre. Upewnij się, że usunąłeś folder pakietu (znajdujący się w folderze obj \ Debug i / lub obj \ Release ) z folderu projektu, w przeciwnym razie błąd będzie nadal występował.
FWIW, MS wie o tym błędzie ...
źródło
\obj
ścieżkę), a NIE MvcBuildViews. Różnica jest subtelna, ale znacząca.Usunąłem wszystko z mojego folderu obj / Debug i naprawiłem ten błąd. To pozwoliło mi wyjść w
opcja w moim pliku projektu (która jest przydatna z szablonem T4MVC T4).
Edycja: można to osiągnąć znacznie łatwiej, używając po prostu menu „Build” -> „Rebuild Solution” (ponieważ to, co faktycznie robi odbudowa, to wyczyszczenie folderu obj / Debug, a następnie rozwiązanie kompilacji).
źródło
Używam tego obejścia na stronie MS Connect dla tego błędu. Czyści wszystkie pliki obj i tymczasowe w projekcie (wszystkie konfiguracje) przed uruchomieniem AspNetCompiler.
źródło
rmdir /S /Q "$(ProjectDir)\obj"
do sekcji post build zgodnie z Microsoft Ticket rozwiązało problem!Ten problem występuje, gdy w folderze obj znajdują się dane wyjściowe projektu sieci Web (szablon web.config lub tymczasowe pliki publikowania). Używany kompilator ASP.NET nie jest wystarczająco inteligentny, aby ignorować elementy w folderze obj, więc zamiast tego generuje błędy.
Inną poprawką jest nuke na wyjściu publikacji tuż przed wywołaniem <AspNetCompiler>. Otwórz plik .csproj i zmień to:
do tego:
Spowoduje to usunięcie wszystkich plików web.config w katalogu \ obj, a także wszystkich folderów PackageTmp w katalogu \ obj.
źródło
obj
teczce miałem jakieś resztki .<ItemGroup>
są nieprawidłowe, ale zignoruj to - i tak działa.Jeśli korzystasz z funkcji Web Publish, możesz ustawić
MvcBuildViews=false
iPrecompileBeforePublish=true
, które prekompilują po skopiowaniu do folderu tymczasowego (bezpośrednio przed publikacją / pakietem).UWAGA:
PrecompileBeforePublish
jest obsługiwany tylko przez „nowy” stos potoku publikowania w sieci Web (VS2010 SP1 + Azure SDK lub VS2012 RTM). Jeśli używasz VS2010 RTM, musisz użyć jednej z alternatywnych metod.źródło
Jeśli chodzi o rozwiązanie autorstwa jrummell, ustawienie:
DependsOnTargets="CleanWebsitesPackage;CleanWebsitesPackageTempDir;CleanWebsitesTransformParametersFiles;"
To działa w VS 2010 , ale nie w VS 2012 . W 2012 roku trzeba postawić:
DependsOnTargets="CleanWebsitesPackage;CleanWebsitesWPPAllFilesInSingleFolder;CleanWebPublishPipelineIntermediateOutput"
Źródło:
VS 2010: C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets
VS 2012: C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.targets
źródło
Wiem, że otrzymałem odpowiedź, ale chciałem tylko dodać coś interesującego, co znalazłem.
W projekcie ustawiłem „MvcBuildViews” na false, usunąłem wszystkie foldery bin i obj i nadal otrzymywałem błąd. Okazało się, że istnieje plik „.csproj.user”, który nadal ma ustawioną wartość „MvcBuildViews” na true.
Usunąłem plik „.csproj.user” i wszystko działało.
Dlatego upewnij się, że zmieniasz plik csproj, aby zmienić lub usunąć również plik „.csproj.user”.
źródło
Miałem również ten problem, więc utworzyłem zdarzenie przed kompilacją we właściwościach projektu, aby wyczyścić katalogi wyjściowe (
${projectPath}\bin,${projectPath}\obj\${ConfigurationName}
). W innym projekcie również otrzymywałem ten błąd, nawet po przeprowadzeniu czyszczenia. W drugim projekcie kompilowałem widoki wymienione w pliku projektu:Zmieniłem prawdę na fałsz i nie narzekał już na ten błąd, ale nadal działał poprawnie. Nie twierdzę, że wiem dokładnie, co spowodowało drugi błąd, ale przynajmniej na razie posunąłem się naprzód.
źródło
Problem dotyczy plików pośrednich, ale istnieje inne rozwiązanie polegające na wyczyszczeniu tych plików pośrednich przed zbudowaniem widoków.
To rozwiązanie zostało zawarte w niektórych wersjach VS, ale mogę tylko powiedzieć, że miałem problem w VS 2013 Update 5. (Zobacz "Uwaga" poniżej, można to naprawić w tej wersji, ale nie działa tylko w moim przypadek niestandardowy).
Rozwiązanie pożyczyłem od Error: allowDefinition = 'MachineToApplication' poza poziomem aplikacji w Visual Studio Connect.
Rozwiązanie polega
.csproj
na dołączeniu tych wierszy do projektu ( pliku) aplikacji internetowej, które obsługują usuwanie gotowych plików pośrednich:Uwaga: z jakiegoś powodu, prawdopodobnie dlatego, że włączyłem go sam do projektu, mój cel kompilacji do budowania widoków został nazwany
"BuildViews"
zamiast"MvcBuildViews"
, więc musiałem odpowiednio zmodyfikowaćBeforeTargets
atrybut. Uprościłem też cel, usuwającPropertyGroup
i upraszczając warunek, na przykład:źródło
W moim przypadku widziałem, że kiedy mam MvcBuildViews i PrecompileDuringPublish jako oba prawdziwe - to był ten problem.
Usunąłem więc PrecompileDuringPublish i to rozwiązanie zadziałało i od tego czasu nie napotkałem tego problemu.
źródło