2013-02-15 43 views
25

Podczas kompilowania mojego projektu Visual Studio C#, otrzymuję następujący błąd:Pozycja została określona więcej niż jeden raz w parametrze "Zasoby". Duplikaty nie są obsługiwane przez parametr „zasoby”

The item "obj\Debug\SampleProject.Forms.MDIMain.resources" was specified more than once in the "Resources" parameter. Duplicate items are not supported by the "Resources" parameter.

Jednak Szukałem dużo w internecie, ale żaden z roztworu pracował dla mnie.

Próbowałem usunąć formularz i ponownie go dodać do projektu, ale to nie działa dla mnie.

Mam tylko jeden plik resx.

używam VS 2010.

Również próbowałem następujące rozwiązania, ale nie pracował dla mnie:

  1. https://stackoverflow.com/a/7928191/2074603
  2. https://stackoverflow.com/a/10066009

Odpowiedz

15

miałem ten problem niedawno i myślę, że wymyśliłem moją szczególną sytuację, więc może ci to pomoże.

Użyłem Visual Studio IDE do skopiowania istniejącego formularza (nazwijmy go: Form1). Wkleiłem go do tego samego projektu (przybył jako Copy of Form1)

Następnie zmieniłem nazwę tej nowej kopii na Form2.

Zajęło mi to trochę czasu, ale w końcu okazało się, że IDE nie przemianowany zarówno Form1 i Copy of Form1 do Form2

Nazwy plików były prawidłowe ... tylko rzeczywiste klas wewnątrz były nazwie.

Ręcznie zmieniłem nazwę oryginału z powrotem na właściwą klasę i voila, zadziałało.

+2

zależy także od typu pliku, ale wpadłem na to podczas pracy z plikami XAML - i sądzę, można go zastosować do innych plików wymagają VS do normalnego korzystania z projektantów. Otwórz pliki, które skopiowałeś, patrząc na kod i upewnij się, że wszystkie nazwy zostały tam wyprostowane. W moim przypadku VS nie wiedział lepiej, aby zmienić niektóre z tych zmiennych w XML. – Mattygabe

+0

@Mattygabe: Dzięki! Dobrze wiedzieć. –

+0

To był dokładnie mój problem. Kopiuję/wklejałem formularz do tego samego projektu, a zmiana nazwy nie zmieniła całkowicie tak, jak powinna. Musiałem również zmienić nazwę klasy w pliku Form.Designer.cs dla nowo wklejonego formularza. –

3

Miałem ten sam błąd iw moim przypadku naprawiłem ten problem tak, jak podążanie.

enter image description here

dół zaznaczonej części był inny plik some_name_not_equal_to_main.resx i po usunięciu go, mój program zacząć działać normalnie.

Mam nadzieję, że to pomogło.

1

Po zmianie nazwy pliku, zmień nazwę klasy i wszystkich konstruktorów wewnątrz nowo utworzonego pliku. Domyślnie nazwa pliku zmienia się, ale nazwa klas w nich się nie zmienia. Tak więc potrzebne.

1

Po prostu miałem ten sam problem. Nie jestem pewien dokładnej semantyki, ale wiąże się to z utrzymaniem wielu plików jako częściowej klasy "głównej".

W moim przypadku IDE wpadł na pomysł, aby dodać procedury inicjalizacji formularzy do jednego z plików klasy częściowej, który nie był "główną" formą.

To stworzyło dwie "główne" formy i konflikt.

Po prostu znalezienie dodanych funkcji init i ich usunięcie wraz z powiązanym plikiem .resx rozwiązało problem.

0

Jeśli utworzyłeś kopię formularza, przejdź do właściwości i zmień nazwę skopiowanego formularza.

W większości przypadków dzieje się tak, gdy tworzy się kopię formularza. Podczas tworzenia kopii formularza nowy formularz ma taką samą nazwę jak stara. To nie jest stara nazwa postaci jest zmieniona.

Z tego przykładu:

używałem Visual Studio IDE skopiować istniejącą formę (nazwijmy go Form1). Wkleiłem go do tego samego projektu (przybył jako Copy of Form1). Teraz przejdź do „Kopia Form1” [] W przypadku, gdy już przemianowano wtedy będzie to imię] przejdź do właściwości Zmień nazwę na Form2 (lub cokolwiek klasa nazwę chcesz)

i powinno działać.

Pamiętaj także, że po zmianie nazwy klasy możliwe jest również, że odwołania do nazwy klasy w kodzie również ulegną zmianie. Bądź więc ostrożny. Po zmianie nazwy zasugeruję, aby ponownie skompilować kod, tak aby po zmianie referencji można powrócić do oryginalnej nazwy klasy (w tym przypadku Form1). Następnie możesz zacząć korzystać z nowych odniesień do klas.

16

Easy!

  1. prawym przyciskiem myszy projekt i wybierz „Zwolnij Project”

  2. prawym przyciskiem myszy i ponownie „Edit your_project.csproj”

  3. wyszukiwanie duplikatów plików wymienionych w komunikacie o błędzie i Usuń ich.

  4. Zapisz i zamknij.

  5. prawym przyciskiem myszy, aby wybrać „Reload Project” view image

+0

To tutaj. Problemem dla mnie był plik '.projitems' dla wspólnego rozwiązania, do którego dwukrotnie odwoływano się do tego samego pliku. Wystarczy spojrzeć na wszystkie pliki proj ('.csproj',' .vbproj', itp.), Niezależnie od tego, jaka nazwa pliku, o której mówi komunikat o błędzie, jest powielona. Następnie usuń wszystkie linie poza linią, która się do nich odwołuje. – CooperAtlas