Próbuję skompilować mój dodatek Excel przy użyciu C # 4.0 i zacząłem dostawać ten problem podczas budowania mojego projektu w Visual Studio. Ważne jest, aby powiedzieć, że wcześniej nie miałem tego problemu. Co może tak się stać?
c#
visual-studio
.net-4.0
Sergey Kucher
źródło
źródło
bin
iobj
swój projekt, i ponownie zbuduj projekt. Czasami to działa.Odpowiedzi:
Domyślam się, że nie pracujesz z silnie nazwanymi zestawami. Wystąpił ten błąd, gdy dwa projekty odnoszą się do nieco różnych wersji tego samego zestawu, a projekt bardziej zależny odnosi się do tych projektów. Rozwiązaniem w moim przypadku było usunięcie klucza i informacji o wersji z nazwy zestawu w plikach .csproj (i tak nie miało to znaczenia), a następnie wykonanie czystej kompilacji.
Zmiany między różnymi wersjami zestawu były zgodne z odnoszącymi się do nich częściami rozwiązania. Jeśli tak nie jest, może być konieczne wykonanie dodatkowej pracy w celu rozwiązania problemu.
NuGet
Dzięki NuGet łatwo jest znaleźć się w takiej sytuacji, jeśli:
Powoduje to, że w twoim rozwiązaniu są dwa projekty odwołujące się do różnych wersji zestawów tego pakietu. Jeśli jeden z nich odnosi się do drugiego i jest aplikacją ClickOnce, zobaczysz ten problem.
Aby to naprawić, wydaj
update-package [package name]
polecenie w konsoli Menedżera pakietów Nuget, aby wszystko wyrównać, w tym momencie problem zniknie.Powinieneś zarządzać pakietami NuGet raczej na poziomie rozwiązania niż na poziomie projektu, chyba że istnieje ważny powód, aby tego nie robić. Zarządzanie pakietami na poziomie rozwiązania pozwala uniknąć wielu wersji zależności. Podczas korzystania z interfejsu zarządzania, jeśli karta Skonsolidowane pokazuje, że 1 lub więcej pakietów ma wiele wersji, rozważ konsolidację ich do jednej.
źródło
Kiedy miałem ten problem, naprawiłem go, wyłączając „Włącz ustawienia bezpieczeństwa ClickOnce”.
Menu: Projekt | „Nazwa projektu” Właściwości ... | Karta Zabezpieczenia | Pole wyboru „Włącz ustawienia bezpieczeństwa ClickOnce”.
źródło
Zobacz tę odpowiedź .
źródło
Miałem ten problem. Stało się tak, ponieważ miałem wiele projektów wskazujących na ten sam zestaw, ale z różnych wersji. Rozwiązuję go, wybierając tę samą wersję dla wszystkich projektów w moim rozwiązaniu.
źródło
Jeśli zmieniłeś wersję zestawu lub skopiowałeś inną wersję biblioteki zarządzanej podaną w błędzie, być może wcześniej skompilowałeś pliki odwołujące się do niewłaściwej wersji. „Odbuduj wszystko” (lub usuwając foldery „bin” i „obj”, jak wspomniano we wcześniejszym komentarzu) powinno naprawić ten przypadek.
źródło
musisz podpisać zestaw za pomocą klucza. Przejdź do właściwości projektu w obszarze podpisywania kart:
źródło
Dodanie mojego rozwiązania tego problemu dla każdego, kto może mu pomóc.
Miałem rozwiązanie ClickOnce zgłaszające ten błąd. Aplikacja odnosiła się do wspólnego folderu „Libs” i zawierała odwołanie do projektu do
Foo.dll
. Chociaż żaden z projektów w rozwiązaniu nie odwoływał się do statycznej kopiiFoo.dll
w folderze „Libs”, niektóre z odnośników w tym folderze tak (tj. Moje rozwiązanie miałoLibs\Bar.dll
odniesienia do których odnośnikówFoo.dll
). Ponieważ aplikacja CO wyciągnęła wszystkie zależności zLibs
jak również ich zależności, obie kopie zostały włączone do projektu. To generowało błąd powyżej.Naprawiłem problem przesuwając moją
Libs\Foo.dll
wersję statyczną do podfolderu,Libs\Fix\Foo.dll
. Ta zmiana spowodowała, że aplikacja ClickOnce używała tylko wersji DLL projektu i błąd zniknął.źródło
Usunięcie biblioteki DLL (gdzie wystąpił błąd) i ponowne zbudowanie rozwiązania rozwiązało mój problem. Dzięki
źródło
Jeśli wypróbowałeś wszystkie pozostałe odpowiedzi w tym pytaniu i:
... możesz mieć osobne wersje biblioteki DLL pakietów NuGet w swoich projektach „Referencje, ponieważ referencja utworzona przez Intellisense / ReSharper będzie„ normalną ”referencją, a nie referencją NuGet zgodnie z oczekiwaniami, więc proces aktualizacji NuGet wygrał” znajdź lub zaktualizuj to!
Aby to naprawić, usuń odniesienie w Projekcie A, a następnie użyj NuGet, aby go zainstalować i upewnij się, że pakiety NuGet we wszystkich projektach mają tę samą wersję. (jak wyjaśniono w tej odpowiedzi )
Wskazówka Life Pro:
Ten problem może pojawić się za każdym razem, gdy ReSharper / Intellisense sugeruje dodanie odniesienia do twojego projektu. Może być znacznie bardziej skomplikowany niż w powyższym przykładzie, z wieloma projektami i zależnościami, które utrudniają odnalezienie. Jeśli referencje sugerowane przez ReSharper / Intellisense pochodzą z pakietu NuGet, użyj NuGet, aby je zainstalować.
źródło
Kiedy stało się tak z WindowsAPICodePack po jego aktualizacji, właśnie przebudowałem rozwiązanie.
Kompilacja -> Przebuduj rozwiązanie
źródło
W moim rozwiązaniu było zbyt wiele projektów, aby przejść i indywidualnie je zaktualizować, więc naprawiłem to przez:
źródło
Rozładowanie i ponowne załadowanie problemu rozwiązało to dla mnie.
źródło
Poszedłem opublikować , pliki aplikacji, znalazłem dll zgłaszający błąd zmieniłem go na „Include” z „Include (Auto)”. Mogę teraz opublikować.
źródło
Ten problem napotkałem po migracji dodatku Excel z Package.config do PackageReference. Wydaje się, że ma to związek z tym problemem .
Poniższe działa jako przybliżone obejście, jeśli nie używasz ClickOnce (spowoduje to pominięcie wszystkich informacji o zależnościach w
.manifest
pliku):Znajdź sekcję wyglądającą następująco:
Edytuj kopię
.targets
pliku o zmienionej nazwie (w moim przypadku plik został rozwiązanyC:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets
i zrobiłem kopięMicrosoft.VisualStudio.Tools.Office_FIX.targets
w tym samym folderze - nie sprawdziłem, czy działa z innego folderu).Znajdź
GenerateApplicationManifest
element i zmień jego atrybutDependencies="@(DependenciesForGam)"
naDependencies=""
.Zmień sekcję w 2., aby
.targets
zamiast tego odwoływała się do edytowanego pliku.Będzie to musiało być powtarzane za każdym razem, gdy wersja
.targets
pliku dostarczonego z VS jest aktualizowana (w przeciwnym razie nie dostaniesz aktualizacji), ale mam nadzieję, że wkrótce zostanie naprawiona ...źródło
Czy Twój zespół jest właściwie podpisany?
Aby to sprawdzić, naciśnij Alt + Enter na swoim projekcie (lub kliknij prawym przyciskiem myszy, a następnie Właściwości). Przejdź do „Podpisywanie”. Sprawdź, czy pole wyboru „Podpisz zespół” jest zaznaczone, czy plik klucza z silną nazwą jest zaznaczony, a pole „Tylko znak opóźnienia” nie jest zaznaczone .
źródło
Oto inne podejście do problemu:
Kliknij projekt prawym przyciskiem myszy i wybierz opcję „Zwolnij projekt”. Zauważysz, że Twój projekt staje się niedostępny.
Kliknij prawym przyciskiem myszy niedostępny projekt i wybierz opcję „Edytuj”.
Przewiń w dół do znacznika „<ItemGroup>”, który zawiera wszystkie znaczniki zasobów.
Teraz przejdź do odwołania wyświetlonego na liście błędów, zauważysz, że używa pojedynczego znacznika (tj
< Reference Include="assemble_name_here, Version=0.0.0.0, Culture=neutral" / >
.).Zmień to, aby wyglądać następująco:
.
źródło
Jest to spowodowane zmianą przywoływanej wersji .dll. Musisz usunąć wszystkie elementy lub .dll w docelowym folderze kompilacji.
źródło
Mam podobny błąd kompilatora. Po dodaniu zależnego projektu pliku DLL do rozwiązania problem został rozwiązany.
źródło
Jeśli twój główny projekt korzysta z niektórych projektów bibliotecznych i masz do nich odniesienia, możesz spowodować ten problem, jeśli odwołanie do pliku dll zestawu zamiast do projektu biblioteki, gdy zmienisz coś w projekcie biblioteki (np. Zmień nazwę klasy).
Możesz sprawdzić wszystkie odniesienia do głównego projektu, przeglądając w oknie Przeglądarki obiektów (menu Widok-> Przeglądarka obiektów). Odwołanie do pliku dll ma zawsze numer wersji. Przykład: TestLib [1.0.0.0]
Rozwiązanie: usuń bieżące odniesienie głównego projektu do projektu biblioteki i ponownie dodaj odwołanie do tego projektu biblioteki.
źródło
Po wypróbowaniu większości rozwiązań tutaj, w końcu właśnie dodałem odniesienie do projektu z projektu „kliknij raz”, co zmieniło go na Uwzględnij (Auto) z Uwzględnij i wreszcie działało.
źródło
Pomogło mi to, że wszedłem do Menedżera pakietów i spojrzałem na zainstalowany pakiet, który był przyczyną problemu. Widziałem, że kilka projektów odnosi się do tego samego pakietu, ale różnych wersji. Dopasowałem je w zależności od moich potrzeb i zadziałało.
źródło
Miałem to w rozwiązaniu z 6 projektami. Jeden z moich projektów odwoływał się do nazwanego zestawu jako odwołania do pliku. Wszyscy inni wskazywali na odniesienie do projektu.
W takich przypadkach zwykle pojawia się inny błąd.
Moim rozwiązaniem było usunięcie nazwanego zestawu w dowolnym miejscu, do którego się on odwołuje, i dodanie go z powrotem. Gdy pracowałem nad projektem, problem zniknął. Zanim to zrobiłem, spróbowałem wyczyścić rozwiązanie, a także upewnić się, że żaden z projektów nie został podpisany.
mam nadzieję, że to pomoże komuś ...
źródło
Jeśli jest to niezgodność zależności, przejdź do menedżera pakietów NuGet na poziomie rozwiązania i sprawdź karty Aktualizuj i Konsoliduj, zharmonizuj wszystko.
źródło
Niedawno trafiłem na ten problem. W moim przypadku mam pakiety NuGet na różnych zestawach. Miałem różne wersje tych samych pakietów NuGet powiązanych z moimi własnymi zestawami.
Moim rozwiązaniem było użycie menedżera pakietów NuGet w Rozwiązaniu, w przeciwieństwie do poszczególnych projektów. Umożliwia to opcję „konsolidacji”, w której można aktualizować pakiety NuGet w dowolnej liczbie projektów - wszystkie odnoszą się do tej samej wersji zestawu. Gdy wykonałem konsolidację, błąd kompilacji zniknął.
źródło
Wpadłem również na pewien problem, wystarczyło tylko usunąć plik .dll (można go znaleźć w odnośniku), który powoduje błąd, i dodać go ponownie .
Działa jak marzenie.
źródło
Spróbuj z pakietem aktualizacji -reinstall -ignoredependencies
źródło
Wystarczy przejść do Publikuj -> Plik aplikacji -> I zmień status opublikowanego pliku dll z wymagań wstępnych na dołączony! To zadziałało dla mnie!
źródło