Mam projekt, który generuje następujący błąd podczas kompilacji:
błąd CS0579: zduplikowany atrybut „AssemblyVersion”
Sprawdziłem plik AssemblyInfo.cs
i wygląda na to, że nie ma tam duplikatów.
Znalazłem ten artykuł w witrynie MSDN, który dotyczy podobnego problemu, a zastosowanie się do sugestii z tego artykułu rozwiązuje również problem.
Czy ktoś może mi powiedzieć, co się tutaj dzieje? Czy dzieje się tak tylko w przypadku posiadania dwóch lub więcej projektów z klasami o podobnych nazwach? A może to coś innego?
c#
compiler-errors
Aamir
źródło
źródło
Odpowiedzi:
W przeszłości napotkałem również ten problem, więc zamierzam założyć, że proces kompilacji dostarcza informacje o zestawie oddzielnie, aby zapewnić wersjonowanie. A to powoduje duplikację, ponieważ Twój projekt również zawiera te informacje w
AssemblyInfo.cs
pliku. Więc usuń plik i myślę, że powinien działać.źródło
Począwszy od programu Visual Studio 2017 innym rozwiązaniem umożliwiającym dalsze korzystanie z
AssemblyInfo.cs
pliku jest wyłączenie automatycznego generowania informacji o zestawie w następujący sposób:Osobiście uważam, że jest to bardzo przydatne w projektach, które wymagają wsparcia zarówno .NET Framework, jak i .NET Standard.
źródło
.csproj
plik za pomocą swoich stron właściwości (zgłoszenie, budować, budować Wydarzenia, itp), przy czymPropertyGroup
zGenerateAssemblyInfo
znika :-(Miałem ten sam błąd i to było podkreślanie wersji Assembly Vesrion i Assembly File, więc czytając odpowiedź Luqi, po prostu dodałem je jako komentarze i błąd został rozwiązany
źródło
Podczas konwertowania starszego projektu na .NET Core większość informacji, które znajdowały się w AssemblyInfo.cs, można teraz ustawić w samym projekcie. Otwórz właściwości projektu i wybierz kartę Pakiet, aby wyświetlić nowe ustawienia.
W poście Erica L. Andersona „Duplicate 'System.Reflection.AssemblyCompanyAttribute'” opisano 3 opcje:
źródło
.csproj
) jest bardziej intuicyjne i bardziej „Visual Studio” , ponieważ są one metadanymi, a nie kodem opisującym rzeczywistą logikę. Mam nadzieję, że w przyszłości wszystko da się określić w projekcie! (Obecnie nie mogę określić widoczności COM, więc zostawiam toAssemblyInfo.cs
.)W moim przypadku niektóre tymczasowe pliki * .cs wygenerowane podczas kompilacji zostały przypadkowo dodane do projektu.
Pliki pochodziły z
obj\Debug
katalogu, więc zdecydowanie nie powinno się ich dodawać do rozwiązania.*.cs
Wieloznaczny poszedł trochę szalony i dodaje je nieprawidłowo.Usunięcie tych plików rozwiązało problem.
źródło
W moim przypadku tam, gdzie podfolder w projekcie, który sam był folderem projektu:
system plików:
rozwiązanie
Następnie musiałem usunąć podfolder „testy” z projektu „webapi”.
źródło
Dla mnie było to, że AssembyInfo.cs i SolutionInfo.cs miały różne wartości. Więc sprawdź również te pliki. Właśnie usunąłem wersję z jednego z nich.
źródło
Mój błąd wystąpił, ponieważ w jakiś sposób w folderze moich kontrolerów został utworzony folder obj. Po prostu wyszukaj w swojej aplikacji wiersz w pliku Assemblyinfo.cs. Gdzieś może być duplikat.
źródło
Zwykle dzieje się tak, gdy skompilowałem projekt w programie Visual Studio 2017, a następnie próbuję go przebudować i uruchomić z .NET Core za pomocą polecenia wiersza polecenia „dotnet run”.
Po prostu usunięcie wszystkich folderów „bin” i „obj” - zarówno w „ClientApp”, jak i bezpośrednio w folderze projektu - umożliwiło pomyślne odtworzenie i uruchomienie polecenia .NET Core „dotnet run”.
źródło
W projekcie musi już istnieć plik AssemblyInfo.cs:
Aby rozwiązać: - Usuń dowolny plik AssemblyInfo.cs
źródło
Jeszcze innym rozwiązaniem w przypadku aktualizacji rdzenia do VS2017 jest usunięcie ich w pliku properties \ assemblyinfo.cs.
Ponieważ są teraz przechowywane w projekcie.
źródło
Znalazłem tę odpowiedź w msdn, która wyjaśnia oznaczanie pliku jako Treść, a następnie Kopiuj do wyjścia = Jeśli nowszy. Zobacz artykuł poniżej:
https://social.msdn.microsoft.com/Forums/en-US/8671bdff-9b16-4b49-ba9e-227cc4df31b2/compile-error-cs0579-duplicate-assemblyversion-attribute?forum=vsgatk
GH
źródło
Natknąłem się na to samo, gdy próbowałem dodać narzędzie GitVersion, aby zaktualizować moją wersję w AssemblyInfo.cs. Użyj projektu VS2017 i .NET Core. Więc po prostu zmieszałem oba światy. Moje AssemblyInfo.cs zawiera tylko informacje o wersji, które zostały wygenerowane przez narzędzie GitVersion, mój csproj zawiera pozostałe rzeczy. Pamiętaj, że nie używam
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
atrybutów związanych tylko z wersją (patrz poniżej). Więcej szczegółów tutaj Właściwości AssemblyInfo .AssemblyInfo.cs
my.csproj zawiera wszystkie powiązane z innymi atrybutami assemblera:
źródło
Miałem ten problem, gdy mój główny projekt znajdował się w tym samym folderze co rozwiązanie, a następnie miałem oddzielny projekt w tym samym rozwiązaniu znajdujący się w podfolderze, a ten oddzielny projekt używał głównego projektu jako odniesienia. To spowodowało, że główny projekt wykrył podfoldery bin & obj foldery, które utworzyły zduplikowane odniesienia.
źródło
Mój błąd polegał na tym, że odwoływałem się również do innego pliku w moim projekcie, który również zawierał wartość atrybutu „AssemblyVersion”. Usunąłem ten atrybut z jednego z plików i teraz działa poprawnie.
Kluczem jest upewnienie się, że ta wartość nie jest zadeklarowana więcej niż raz w żadnym pliku w projekcie.
źródło
Edytuj AssemblyInfo.cs i #if! NETCOREAPP3_0 ... #endif
źródło
Otrzymałem ten błąd, gdy umieściłem 2 projekty w tym samym katalogu. Jeśli mam katalog z rozwiązaniem i umieszczam w nim osobny katalog Web and Data, kompiluje się dobrze.
źródło
Jeśli masz ten problem w potoku kompilacji w usłudze Azure DevOps, spróbuj ustawić akcję kompilacji jako „Zawartość” i Kopiuj do katalogu wyjściowego równą „Kopiuj, jeśli nowsza” we właściwościach pliku AssembyInfo.cs.
źródło
Uważam, że mój folder biblioteki został uszkodzony przez nieumyślne utworzenie innej biblioteki klas. Usunąłem bibliotekę i wszystkie skojarzone z nią pliki, ale problem nadal występował. Znalazłem obejście, usuwając WSZYSTKIE foldery bin i obj w katalogu. Kompilacja poprzednio przebiegała prawidłowo, ale znaleziono podfolder zawierający ten sam plik assemblyinfo.cs.
źródło
Ten problem jest konfliktem odniesień, który jest głównie charakterystyczny dla VS 2017.
Rozwiązałem ten sam błąd, po prostu wykomentowując wiersze 7-14, a także kody wersji zestawu na dole strony AssemblyInfo.cs
Usunięto wszystkie zduplikowane odniesienia i projekt był w stanie ponownie zbudować.
źródło