Kompilacje projektów programu Visual Studio 2015 nie powiodły się, ale nie ma błędów

110

Wszystkie kompilacje mojego projektu kończą się niepowodzeniem, ale nie są wyświetlane żadne błędy. Próbowałem wyczyścić i odbudować, ale to nie zadziałało.

Zmieniłem szczegółowość danych wyjściowych programu MSBuild na „Diagnostyka”, mając nadzieję, że pomoże mi to zidentyfikować problem, a teraz utknąłem. Oto jak wygląda wynik:

1>Project 'ProjectMM.Data.Models' is not up to date. Input file 'C:\Projects\ProjectMM\ProjectMM.Data.Models\ProjectMM.Data.Models.csproj' is modified after output file 'C:\Projects\ProjectMM\ProjectMM.Data.Models\bin\Debug\ProjectMM.Data.Models.pdb'.
All packages are already installed and there is nothing to restore.
1>------ Build started: Project: ProjectMM.Data.Models, Configuration: Debug Any CPU ------
2>Project 'ProjectMM.Data' is not up to date. Input file 'C:\Projects\ProjectMM\ProjectMM.Data\ProjectMM.Data.csproj' is modified after output file 'C:\Projects\ProjectMM\ProjectMM.Data\bin\Debug\ProjectMM.Data.pdb'.
2>------ Build started: Project: ProjectMM.Data, Configuration: Debug Any CPU ------
3>Project 'ProjectMM' is not up to date. Input file 'c:\projects\projectmm\projectmm\app_start\bundleconfig.cs' is modified after output file 'C:\Projects\ProjectMM\ProjectMM\bin\ProjectMM.pdb'.
3>------ Build started: Project: ProjectMM, Configuration: Debug Any CPU ------
========== Build: 0 succeeded, 3 failed, 0 up-to-date, 0 skipped ==========
Rob Greenlee
źródło
1
Czy jest wyświetlane okno listy błędów?
Karthik
Przejdź do menu Widok -> Wybierz listę błędów i sprawdź, czy nie masz żadnych błędów. Idealnie powinieneś dostać to na liście błędów. Nie zamykaj okna Lista błędów i spróbuj zbudować projekt i zobacz, co się stanie ...
Karthik
4
Oto, co się właśnie wydarzyło: opublikowałem to pytanie i zakładając, że nie otrzymam odpowiedzi od razu, zamknąłem projekt. Poprosiłeś mnie o otwarcie kopii zapasowej, otwarcie listy błędów i odbudowanie. Działało idealnie, żadnych błędów, wszystko się udało!
Rob Greenlee
@RobGreenlee: Zobacz moją odpowiedź. Założę się, że zakładka „Błąd” była aktywna, gdy ponownie otworzyłeś rozwiązanie!
jpo38

Odpowiedzi:

101

Miałem ten sam problem i zamknięcie i ponowne otwarcie programu Visual Studio rozwiązuje problem.

Próbowałem również wyczyścić roztwór, a czyszczenie nie powiodło się.

Mogą istnieć inne scenariusze, w których to nie działa, ale w moim przypadku ponowne uruchomienie rozwiązało ten problem.

Carson Evans
źródło
22
Jeśli to nie pomoże, ponowne uruchomienie. Często napotykam ten problem, gdy dodaję projekt do mojego rozwiązania, z inną platformą docelową odwołującą się do różnych projektów platformy.
Bastiaan Linders
7
W moim przypadku ponowne uruchomienie VS lub wyczyszczenie roztworu nie pomogło. Jednak usunięcie pliku .suo z folderu .vs rozwiązało problem
cellik
@cellik: W moim przypadku to nie działa. Co jest warte… Używam wersji Enterprise.
KMC
4
Miałem ten sam problem po zmianie czasu komputera ze strefy czasowej CEST (GMT + 1) na strefę czasową USA (GMT-7), wydaje się, że nie mogłem sobie poradzić, że znacznik czasu ostatniej kompilacji był w przyszłości. Po ponownym uruchomieniu VS wszystko jest w porządku.
martinh_kentico
2
Usunięcie plików .suo również pomogło, ponowne uruchomienie i czyszczenie nie.
Johann Marx
117

Możliwe, że nie widzisz wszystkich błędów kompilacji.

Zmieniając listę rozwijaną za ikoną „Wiadomości” z „Build + Intellisense” na „Build Only”, będziesz mógł zobaczyć błędy zgłaszane podczas kompilacji, które nie są wykrywane przez Intellisense. Zobacz zrzut ekranu poniżej:

Budować

S.Mohamed Mahdi Ahmadian zadeh
źródło
3
Koleś, jesteś moim wybawcą!
KMC
19
Dlaczego błędy „Tylko kompilacja” nie byłyby obecne w „Build + Intellisense”?
CodyF
Pomogło to w wyświetlaniu błędów na liście błędów, ale wiersze kodu z błędami nie mają czerwonego podkreślenia. Domyślam się, że to musi być kwestia Intellisense.
Drew
Pracuje dla mnie. Mój przeszedł na Build i Intellisense, które ukrywały błędy kompilacji. Tylko kompilacja działa i wyświetla błędy kompilacji.
HerrimanCoder
1
Pan zaoszczędził mi ten dzień .. świetna robota .. Wielkie dzięki
MA9H,
32

Widzę regularne przypadki raportowania VS2015 o niepowodzeniu kompilacji, ale w oknie błędu nie pojawiają się żadne błędy. Wychodząc ze starożytnego tła wiersza poleceń, w końcu spojrzałem na okno wyjściowe. W oknie danych wyjściowych kompilator zgłaszał błędy, ale te błędy nie były przechwytywane w oknie błędów. Nigdy nie widziałem tego problemu pod VS2013.

Zwykłe zamknięcie VS i ponowne otwarcie nie rozwiązało tego warunku. (W VS2013 był to powszechny sposób na wykopanie inteligencji XAML z tyłu i powstrzymanie go od naprawiania „błędu”, który został naprawiony).

Do tej pory było to zawsze związane z błędami kompilacji w pliku CS strony XAML. Nie pamiętam, żebym to widział w pliku CS bez strony.

Dopóki ktoś nie wymyśli, aby sprawdzić okno wyjściowe, rzeczy takie jak raportowanie Intellisense w oknie błędów nieprawidłowe odwołania do obiektów w XAML, ale żadne błędy kompilatora wyświetlane w oknie błędu nie mogą spowodować BARDZO zamieszania, ponieważ „pojawia się” tak, jak błędy Intellisense raportuje błędy XAML. Ale tak naprawdę nie jest. Błędy XAML to tylko symptomy niepowodzenia kompilacji plików CS, ale ich błędy nie są zgłaszane w oknie błędu.

Keith
źródło
20
Dla tych z Was nadal zmaga się z okna błędów niewidzialnego, wydaje się, można dostać błędy kompilatora, aby pokazać się w okienku wybierając tylko budować w Filter ErrorList Do listy rozwijanej w oknie listy błędów (listy rozwijanej nie jest oznaczony ... Możesz dowiedzieć się, który to jest, najeżdżając na niego myszą i obserwując etykietkę).
Robert Harvey
2
@RobertHarvey ... to jest klucz ... ale DLACZEGO na świecie Intellisense miałby zastąpić kompilację?
felickz
@RobertHarvey to było dokładnie to. Okazuje się, że ktoś tutaj zasugerował, że odwołuję się do niezgodnego projektu .net, ale nie mogłem stwierdzić, na czym polega problem, dopóki nie przełączyłem wyjścia na „Tylko kompilacja” w okienku Błąd. Gdy to zrobiłem, od razu wskazało mi to na problem. Dziękuję za wskazówkę.
David Gunderson,
Ta odpowiedź była dla mnie wskazówką. Wyszukaj „błąd CS” (bez cudzysłowów), aby znaleźć możliwe wyjątki blokujące kompilację.
granadaCoder
PS. Mój błąd polegał na tym, że użyłem tej samej nazwy zmiennej w mojej metodzie. "string x = string.Empty;" na przykład. Miałem program obsługi wyjątków, który również zawierał deklarację „string x”.
granadaCoder
11

Usunięcie ukrytego .vsfolderu dla mnie działało dla VS2015.

(Zauważ, że w tym miejscu znajdują się teraz pliki SUO)

Mike Asdf
źródło
9

Może się tak zdarzyć, gdy odwołujesz się do innego projektu wersji frameworka .net (w moim przypadku v4.5.2 vs v4.5). Poprawienie tego rozwiąże problem.

Claudiu Constantin
źródło
To był dokładnie mój problem. Dodano nowy projekt do rozwiązania, które było w wersji 4.5.2 i odwołałem się do niego z innego projektu, który był w wersji 4.5. Zmieniono nowy projekt na v4.5 i wszystko działało dobrze.
Drew
7

To, co się wydarzyło, to zmiana strefy czasowej na komputerze na +5: 30, a następnie zmiana z powrotem na -5: 00, co pomieszało VS. Kiedy ponownie uruchomiłem VS, znowu działało dobrze.

MB
źródło
bladego pojęcia. Używam kontroli wersji, więc może się pomylić z czasami ???
MB
6

Sprawdź wszystkie wersje Framework projektu i upewnij się, że wszystkie są takie same lub przynajmniej ten projekt A nie odwołuje się do projektu B, gdy wersja .NET Framework projektu B jest wyższa.

Daniel Minnaar
źródło
6

Miałem ten problem z VS2015 Update 3 RC i Xamarin (projekt udostępniony .Forms).
Kompilator nie zatrzymuje się, błędy były wyświetlane tylko w oknie wyjściowym.
To tylko dla projektów Xamarin (z projektami VB.NET wszystkie działały zgodnie z oczekiwaniami) ...
Aby spróbować znaleźć przyczynę problemu, zmieniłem wyjście kompilacji w VS:
- menu "Narzędzia - Opcje"
- z lewego panelu : „Projekty i rozwiązania: buduj i uruchamiaj”:
- zmień „Szczegółowość wyników MSBuild” z „Minimalne” na „Diagnostyczne”

Po wykonaniu tej czynności kompilator zatrzymał się i pojawił się błąd.
Następnie ustawiłem opcję z powrotem z "Diagnostyka" na "Minimal" (tak jak było wcześniej) i ... zadziałał też z "Minimal" (dla pewności zrestartowałem też VS) ...

Więc ... wydaje się (przynajmniej w moim przypadku), że tylko zmiana (dotknięcie) ustawienia (MSBuild Output Verbosity ") rozwiązała problem i że jest to błąd w VS i / lub oprogramowaniu do integracji Xamarin ...

FredyWenger
źródło
1
Dlaczego ta odpowiedź nie jest bardziej przychylna? Daje ci idealne rozwiązanie do usuwania błędów
John Demetriou,
Sprawdź moją odpowiedź poniżej. Wydaje mi się również, że rozwiązanie jest właściwe, ale zdałem sobie sprawę, że nawet przy poziomie wyjściowym „Diagnostyka” moja karta „Błąd” pozostanie pusta. Podobnie jak inne, najprawdopodobniej pozostawiłeś aktywną kartę „Błąd” i dlatego zaczęła działać dobrze ...
jpo38
6

Nie wiem, czy tylko ja borykam się z tym problemem.

W moim przypadku, kiedy otworzyłem Visual Studio, strefa czasowa była w GMT + 1:00, a kompilacja się powiodła. Następnie zmieniłem strefę czasową na GMT + 5:30, a następnie bez ponownego uruchamiania programu Visual Studio próbowałem uruchomić aplikację, ale kompilacja nie powiodła się bez żadnego błędu lub ostrzeżenia.

Zmieniłem z powrotem strefę czasową na GMT + 1: 00 i kompilacja powiodła się bez żadnego błędu.

Rudresha Parameshappa
źródło
Wielkie dzięki - całe popołudnie doprowadzało mnie do szaleństwa :-)
indra
2

To, co zrobiłem (po tym wszystkim, co powyżej, i nadal nie działało), to przejrzenie wszystkich folderów bin i wyczyszczenie ich wszystkich (tj. Projekty, do których się odwołałem).

To zadziałało dla mnie, mam nadzieję, że zadziała również dla ciebie.

Rodney Ellis
źródło
2

Miałem ten problem i okazało się, że mam usingwskazanie na pustą przestrzeń nazw. Usunięcie tej usingklauzuli rozwiązało problem

Phate01
źródło
2

Sprawdź ostrzeżenia ...

Miałem nową bibliotekę klas z docelowym .Net Framework 4.5, podczas gdy projekt odniesienia był 4.0, co spowodowało problem z odniesieniem.

Po zmodyfikowaniu biblioteki klas za pomocą docelowego .Net Framework 4.0 działała poprawnie.

gyansada
źródło
2

Nic z powyższych odpowiedzi mi nie pomogło. Po wielu eksperymentach w końcu stwierdziłem, że problem dotyczy odwołania Microsoft.Net.Compilers v2.10.0 w jednym z projektów. VS 2015 korzysta z MSBuild v14, który nie obsługuje tej wersji Microsoft.Net.Compilers.

Petar Petrov
źródło
1

Dla mnie ten problem był związany z niestandardowym ustawieniem zestawu reguł CodeAnalysisIncludeAll ”.

Wygląda na to, że kompilator przestrzega tego ustawienia:

  <IncludeAll Action="Error" />

Jednak technologia IntelliSense przyjęła domyślną AKCJĘ na identyfikatorze reguły, czyli „Ostrzeżenie”. To wyjaśnia zachowanie obserwowane przez @RobertHarvey, w którym filtrujesz dane wyjściowe za pomocą tylko kompilacji i wyświetla się jako BŁĄD , ale jeśli filtrujesz tylko przez Intellisene, wyświetla się jako OSTRZEŻENIE . Filtrowanie danych wyjściowych za pomocą domyślnej funkcji Build + Intellisense wydaje się niedeterministyczne!

Moją poprawką było wyraźne wskazanie zasady, że chciałem być ostrzeżeniem jako ostrzeżeniem.

  <Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp" RuleNamespace="Microsoft.CodeAnalysis.CSharp">
    <Rule Id="CS0618" Action="Warning" />
  </Rules>

Jest to potencjalnie problem związany z nieprzestrzeganiem opcji IncludeAll przez Intellisense . Zobacz https://github.com/dotnet/roslyn/issues/7400

felickz
źródło
1

Może się to również zdarzyć podczas migracji projektu do programu Visual Studio 2015 ze starszą wersją Framework. Sprawdź ostrzeżenia na liście błędów. Możesz zobaczyć coś takiego, jak projekt jest obecnie .NET w wersji 2.0 i wymaga .NET 3.5 lub nowszego. Jeśli znajdziesz podobne ostrzeżenie, przejdź do właściwości projektu i wybierz wymagane oprogramowanie .NET Framework.

Tyriddik
źródło
1

Sprawdź ostrzeżenia. Czasami kompilacja zawodziła również z powodu jakiegoś rodzaju ostrzeżeń.

Krish
źródło
1

Po otwarciu rozwiązania, wygenerowaniu go, widzę błędy kompilacji lub ostrzeżenia zgłoszone na karcie „Wyjście”, natomiast na karcie „Błąd” nie ma żadnego problemu.

wprowadź opis obrazu tutaj

Jak widać, konfiguracja „Karta Błąd” jest OK (wybrano „Tylko kompilacja” i „Całe rozwiązanie”).

Zauważ, że po dokładnym zbadaniu stwierdziłem, że dzieje się tak tylko wtedy, gdy karta „Błąd” nie była jeszcze wyświetlana podczas uruchamiania kompilacji!

Jeśli aktywowałeś kartę „Błąd” przed rozpoczęciem kompilacji (lub jeśli była to bieżąca karta podczas uruchamiania programu Visual), to nowo znalezione błędy / ostrzeżenia będą wyświetlane poprawnie:

wprowadź opis obrazu tutaj

To tak, jakby „Karta Błąd” była inicjowana dopiero wtedy, gdy jest widoczna (co może być prawdą, ponieważ pierwsze kliknięcie zajmuje więcej czasu ...), a jeśli tak nie jest, nie gromadzi kompilacji wyniki ...

Jak dotąd nie mam lepszej odpowiedzi na ten problem niż „ aktywuj kartę Błąd przed budowaniem ”.

I założę się, że właśnie dlatego czasami działa „restart VS”. Widzisz, że karta „Błąd” jest pusta, zamykasz i ponownie uruchamiasz VS, a następnie „Karta Błąd” jest wyświetlana domyślnie, ponieważ program VS przywrócił bieżącą aktywną kartę z poprzedniej sesji. Budujesz i teraz zakładka „Błąd” zostaje wypełniona ...! Po prostu miałeś szczęście.

Uwaga: zgłoszono błąd VS: https://connect.microsoft.com/VisualStudio/feedback/details/3132689

jpo38
źródło
To rozwiązanie zadziałało dla mnie. Zdarzyło mi się to raz - nie wyświetlały się żadne ostrzeżenia. Otworzyłem okno Lista błędów i przebudowałem rozwiązanie. Ostrzeżenia zostały wyświetlone tym razem. Nie mogę odtworzyć tego samego problemu ponownie nawet po ponownym uruchomieniu VS.
IAN
1

Dla mnie kompilacja nie powiodła się bez błędów, ale po lekkim badaniu okazało się, że VS. nie znalazł odniesienia do MSHTML.

wprowadź opis obrazu tutaj

To zachowanie pojawiło się po aktualizacji do systemu Windows 10. Aby to naprawić, musisz zarejestrować zestaw z GAC. Aby dowiedzieć się, jak to zrobić, przejdź do odpowiedzi MSHTML DLL w systemie Windows 10 , gdzie znalazłem odpowiedź.

Fid
źródło
0

Zaczerpnięte z tej odpowiedzi

Kompilacja nie powiodła się, w oknie wyjściowym nie pojawiły się żadne błędy.

Aby spróbować znaleźć przyczynę problemu, zmieniłem wyjście kompilacji w VS: - menu "Narzędzia - Opcje" - z lewego panelu: "Projekty i rozwiązania: buduj i uruchom": - zmień "Oznakowanie wyjścia MSBuild" z " Minimalne „do„ Diagnostyczne ”

Po zrobieniu tego znalazłem prawdziwy powód, który w rzeczywistości był błędem w projektach zależności. Projektuję, że byłem zależny, został zbudowany dla innego frameworka (nowszego) niż mój. Tworząc w ten sposób problem. Błędy były wyświetlane tylko wtedy, gdy umieściłem szczegółowość danych wyjściowych w diagnostyce

John Demetriou
źródło
Nie chodzi tylko o znalezienie problemu, ale o nauczenie się, jak go rozwiązać. Dlatego dołączyłem proces debugowania innych odpowiedzi, ponieważ to pomogło mi dowiedzieć się, co jest nie tak. Nie tylko przypadkowe przypuszczenia, w czym może być problem
John Demetriou
0

Dla mnie była to łajdacka posiadłość. Problem niekoniecznie polegał na tym, że nie widziałem błędu; błąd był następujący:

Węzeł potomny „2” zakończył pracę przedwcześnie. Wyłączanie. Informacje diagnostyczne można znaleźć w plikach w katalogu plików tymczasowych o nazwie MSBuild _ *. Failure.txt.

Początkowo kompilacja zawieszała się i nie wyświetlała żadnych błędów, chyba że podjęto próbę zamknięcia programu Visual Studio. Po ponownym uruchomieniu zawieszał się przez długi czas podczas budowania, a następnie wyświetlał powyższy komunikat.

Usuwanie ukrytego .vsfolderu, odbudowywanie / czyszczenie rozwiązania i ponowne uruchamianie programu Visual Studio nie działało. Usunięcie dołączonej własności zrobiło; ergo, może to być rzeczywisty kod, który nie działa poprawnie.

W ostateczności usuwałbym wszystkie ostatnie zmiany jedna po drugiej, dopóki problem nie zostanie rozwiązany, ponieważ żadne z opisanych tutaj rozwiązań nie pomogło.

Aktualizacja

Ponieważ jestem przyzwyczajony do tworzenia tradycyjnych aplikacji WPF, nie zdawałem sobie sprawy, że nie można utworzyć „połączonych” przestrzeni nazw XAML przy użyciu .s z UWP. Próbowałem ustawić dołączoną właściwość za pomocą

My.Namespace:SomeClass.SomeProperty="SomeValue"

A tak powinno być

MyNamespace:SomeClass.SomeProperty="SomeValue"

Nie jest tak ładna, jak mi się podoba, ale najwyraźniej jest to jedyna droga.

James M.
źródło
0

Co mi pomogło:

Zamknięcie wszystkich dokumentów rozwiązało problem. (To samo rozwiązanie, jeśli IntelliSense przestaje działać)

(zakładka prawym przyciskiem myszy - Zamknij wszystkie dokumenty)

Ziv Weissman
źródło
0

Spróbuj tego

Wyłączenie "mstscax.dll"z zależności zadziałało dla mnie.

Emile Cloete
źródło
0

Problem niszowy: właśnie napotkałem ten sam problem. Żadna z powyższych odpowiedzi nie wydawała się pomocna.

Problem dotyczył programu konsoli, nie można oznaczyć metody Main () jako async **, co właśnie robiłem. Nie jestem pewien, dlaczego Visual Studio nie może określić, dlaczego dokładnie projekt nie jest budowany (za każdym razem otrzymuję 0 błędów i 0 ostrzeżeń). Używam programu Visual Studio 2015 Enterprise.

Poprawka: obejście tego problemu jest tutaj .

user3613932
źródło
0

Po zaktualizowaniu pliku dll okazało się, że nowy plik był przeznaczony na wyższą wersję .NET Framework. Rozwiązaniem było przejście do Project Properties i zmiana platformy Target na odpowiednią wersję.

przydatne
źródło
0

MSBuild.exe został zmieniony w katalogu (C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin)

więc po prostu zastępuję MSBuild.exe z innego komputera, który ma vs2015.

Teraz działa dobrze.

Sabarish
źródło
0

Znalazłem rozwiązanie, zmieniając .NET Framework z 4.5.2 na 4.0.

Problem został spowodowany przez odniesienie, które nie było zgodne z aktualnie wybranym frameworkiem.

Stefan Đorđević
źródło
0

Właśnie wyczyściłem filtry i zadziałało. Ikona wyczyść wszystkie filtry znajduje się w pobliżu okna komunikatów.

Nevin jose
źródło
0

Rozpocznij nowy projekt. Skopiuj cały kod do poniższej przestrzeni nazw ConsoleApp38450983450.

Wklej do nowego projektu poniżej przestrzeni nazw ScrewedUpConsoleApp102343

Buduj i działaj idealnie

Brandon Norris
źródło
-1

Powinieneś ustawić ComboBox po prawej stronie pod listą błędów, w „Całe rozwiązanie”, aby zobaczyć wszystkie błędy. wprowadź opis obrazu tutaj

Milad Koudarzi
źródło
1
To dość stare pytanie ma już zaakceptowaną odpowiedź, nie wydaje się, aby twoja bardzo krótka i nieopisana odpowiedź wiele do niego dodała. Także proszę nie odwołuje się do obrazów na stronach zewnętrznych, ale dodać zdjęcia do swojej odpowiedzi!
Dux,