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 ==========

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.


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ć


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.


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)


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.


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.


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.


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 ...


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.


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.


2

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


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.


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.


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


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.


1

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


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


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ź.


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


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.


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)



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 .


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ę.


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.


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.


0

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


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


-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


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.