Przestrzeń nazw nie rozpoznana (nawet jeśli jest tam)

Dostaję ten błąd:

Nie można znaleźć typu lub nazwy przestrzeni nazw "AutoMapper" (brakuje Ci dyrektywy używającej lub odniesienia do zestawu?)

Najśmieszniejsze jest to, że mam już to odniesienie w swoim projekcie:

ProjectThatFails

A to jest mój kod:

using System.Collections.Generic;
using DataContract;
using SelectorDAL;
using AutoMapper;

namespace SpecimenSelect
{
    public class SpecimenSelect : ISpecimenSelect
    {
        public SpecimenSelect()
        {
            SetupMaps();
        }

        private static void SetupMaps()
        {
            Mapper.CreateMap<SpecimenDetail, SpecimenDetailContract>();
        }
Inną dziwną rzeczą jest to, że mam dwa inne projekty w moim rozwiązaniu, które oba używają Automappera i odnoszą się do dokładnie tego samego Automappera.plik dll. Oboje pracują doskonale.

Oto zrzut ekranu jednego z nich:

ProjectThatWorks

A oto ten kod (który dobrze kompiluje):

using System.Collections.Generic;
using AutoMapper;
using DataContract;
using SelectorDAL;

namespace PatientSelect
{

    public class PatientSelect : IPatientSelect
    {
        public PatientSelect()
        {
            SetupMaps();
        }

        private void SetupMaps()
        {
            Mapper.CreateMap<Patient, PatientContract>();
            Mapper.CreateMap<OrderedTest, OrderedTestsContract>();
            Mapper.CreateMap<Gender, GenderContract>();
        }

Oba odniesienia wydają się mieć te same dane na stronie Właściwości.

Co mi umyka?

Próbowałem:

  1. Restartowanie Visual Studio
  2. Referencja bez użycia instrukcji (ie AutoMapper.Mapper.CreateMap)
  3. czyścić i odbudowywać
Jakieś inne pomysły?
 123
Author: Vaccano, 2010-11-19

14 answers

Sprawdź, czy twój projekt nie jest skonfigurowany do korzystania z profilu klienta. NET Framework 4.

Możesz to sprawdzić / zmienić klikając prawym przyciskiem myszy swój projekt (nie rozwiązanie), wybierz Właściwości -> Zastosowanie -> ramy docelowe. Docelowa struktura jest rozwijanym menu na tej stronie.

To jest problem w Visual Studio (posunąłbym się nawet do nazwania tego błędem). AutoMapper wymaga zestawów, które są wyłączone z profilu klienta. NET Framework 4. Ponieważ twój projekt używa tej wersji frameworka, który łamie.

Podobny błąd będzie rozprzestrzeniał się w procesie budowania, gdy wersja. NET Framework dla projektu, do którego się odwołujesz, będzie wyższa niż projekt, w którym się odwołujesz. tj. projekt kierujący 4.5, który odwołuje się do projektu kierującego 4.5.1, spowoduje ten sam błąd.

Musi być lepszy komunikat o błędzie, gdy tak się dzieje, ponieważ nie ma racjonalnego wyjaśnienie, dlaczego nie zostanie on zbudowany, ponieważ komunikat o błędzie mówi o odwołaniu się do zestawu, do którego wyraźnie się odwołałeś.

 231
Author: Andrew Hare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-12 19:37:53

Pozwól, że zadam głupie pytanie: czy mogą być dwa AutoMapy.pliki dll? Jeden z przestrzenią nazw AutoMapper i jeden bez? Potwierdź ścieżki w obu projektach.

Zauważyłem też, że kolejność komend using jest inna. To nie powinno mieć znaczenia, ale próbowałeś je przetasować?

 28
Author: n8wrl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 06:51:55

Jeśli twoja klasa nie kompiluje się, nawet jeśli jest w projekcie sprawdź te:

  1. czy nazwa klasy jest dokładnie taka sama
  2. czy przestrzeń nazw jest dokładnie taka sama
  3. czy właściwości klasy Pokaż build action = compile
 16
Author: Anonymous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-18 13:14:29

Mam podobny problem z referencjami nie rozpoznawanymi w VS2010 i odpowiedzi tutaj nie były w stanie go poprawić.

Problem w moim rozwiązaniu był związany z rozszerzeniem ścieżki, na której znajdował się wspomniany projekt. Ponieważ pracuję z SVN, zrobiłem gałąź repozytorium do testów i ta gałąź zwiększyła się o dwa poziomy w strukturze ścieżek, więc ścieżka stała się zbyt długa, aby mogła być użyteczna w systemie windows. Nie wywołało to żadnego błędu, ale nie rozpoznało przestrzeń nazw odniesienia do projektu. Kiedy poprawię lokalizację projektu, aby miała mniejszą ścieżkę, wszystko poszło dobrze.

 6
Author: onurb84,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-22 13:12:04

W moim przypadku, odnośnik dll został zbudowany w wyższej wersji. Net Framework. Po dodaniu referencji, przydałoby mi się. Ale jak tylko zrobię kompilację, pojawi się błąd "brakujące odniesienie". Odświeżam dll błąd pójdzie, ale nigdy nie zbuduje. Ten post zmusił mnie do sprawdzenia wersji frameworka i w ten sposób mogłem ją rozwiązać, budując wspomniany projekt w tej samej wersji.

 5
Author: Ankur-m,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-26 10:38:04

Być może tabela typu projektu jest w nieprawidłowym stanie. Chciałbym spróbować usunąć / dodać odniesienie i jeśli to nie działa, utworzyć inny projekt, zaimportować mój kod, i zobaczyć, czy to działa.

Natknąłem się na to podczas korzystania z VS 2005, Można oczekiwać MS już naprawił ten konkretny problem..

 3
Author: dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-19 20:27:53

Rozwiązałem ten problem klikając prawym przyciskiem myszy na folderze zawierającym pliki i wybierając wyklucz z projektu , a następnie ponownie klikając prawym przyciskiem myszy i wybierając Dołącz w projekcie (najpierw musisz włączyć Pokaż wszystkie Pliki, aby wykluczony folder był widoczny)

 3
Author: user3251328,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 22:35:24

Pytanie zostało już przyznane, ale istnieją dodatkowe szczegóły, które nie zostały jeszcze opisane, które należy sprawdzić.

Ja też miałem takie zachowanie, gdzie projekt B był odwołany w projekcie a, ale przestrzeń nazw projektu B nie została rozpoznana w projekcie A. po pewnym kopaniu okazało się, że moja ścieżka jest zbyt długa. Poprzez ograniczenie ścieżki projektów (zarówno A jak i B) odniesienia stały się widoczne i dostępne.

Przetestowałem tę teorię tworząc projekt C na znacznie mniejszej ścieżce głębokość. Odwołałem się do projektu C w projekcie A. referencje działały poprawnie zgodnie z oczekiwaniami. Następnie usunąłem projekt C z rozwiązania, po prostu przeniosłem projekt c na głęboką ścieżkę, taką samą jak projekt B, i dodałem projekt c z powrotem do rozwiązania i próbowałem skompilować. Wtedy nie miałem już widoczności w projektowaniu obiektów C.

 2
Author: barrypicker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-18 15:40:34

W moim przypadku skopiowałem classlibrary i nie zmieniłem nazwy "Assembly Name" we właściwościach projektu, więc jedna DLL nadpisywała drugą...

 1
Author: Fernando Meneses Gomes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-03 16:18:11

to musi być najprostsze rozwiązanie, jeśli wszystkie inne odpowiedzi Ci nie pomogą

Szukałem tego, co jest nie tak z moją konfiguracją wśród odpowiedzi, wypróbowałem wszystkie - żadna nie zadziałała, a potem zdałem sobie sprawę, że Visual Studio 2018 zostało opracowane przezMicrosoft . Więc zrobiłem to, co większość ludzi,

Restarted Visual Studio I zadziałało

 1
Author: insomniac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-29 12:40:05

Na to pytanie odpowiedziano już za oryginalny plakat, ale na wypadek, gdyby ktoś napotkał to w projekcie MS-Test:

W programie Visual Studio kliknij menu Test - > Ustawienia testowe - > domyślna Architektura procesora i upewnij się, że architektura jest zgodna z architekturą innego zestawu, do którego się odwołujesz. Jeśli drugim złożeniem jest x64, a ustawieniami testowymi są x86, mogą wystąpić objawy, które miał oryginalny plakat.

 1
Author: S. Hooley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-21 20:20:08

Miałem do czynienia z podobnym problemem, że przestrzeń nazw/metoda nie została znaleziona podczas wykonywania, chociaż było to w porządku podczas kompilacji, a powodem tego wydaje się być to, że Zgromadzenie, do którego się odnosiłem, zostało wdrożone do GAC i od tego czasu zostało zmienione, więc kiedy odwoływałem się do złożenia w Visual Studion, używałem najnowszego, ale w czasie wykonywania została użyta wersja fro GAC.

 0
Author: Pavel Tsybulivskyi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-29 09:05:11

W moim przypadku błąd dostałem tylko w VS 2015. Podczas otwierania projektu W VS 2017 błąd zniknął.

 0
Author: daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-21 15:15:10

Szalony. Wiem.

Wypróbowałem wszystkie opcje tutaj. Ponowne uruchamianie, czyszczenie, ręczne sprawdzanie wygenerowanych bibliotek DLL (jest to bezcenne dla zrozumienia, czy to naprawdę ty jesteś tym, który namieszał).

Dostałem go do pracy, ustawiając szczegółowość MSBuild na "szczegółowe" w opcjach.

 0
Author: Program.X,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-19 13:40:48