Twee namen van uitvoerbestanden omgezet naar dezelfde uitvoer

Onlangs heb ik een nieuw Formgemaakt met de naam WorkersScreen. Wanneer ik het project probeer uit te voeren, krijg ik deze fout:

Fout 1 Twee uitvoerbestandsnamen omgezet naar hetzelfde uitvoerpad:
“obj\x86\Debug\DryWash.WorkersScreen.resources”

Wat betekent het en hoe los je het op?


Antwoord 1, autoriteit 100%

Dit kan gebeuren als twee .resx-bestanden naar hetzelfde formulier verwijzen. Gebeurt meestal bij het hernoemen van formulieren (er kunnen andere redenen van toepassing zijn, ik weet het niet precies)

Als uw specifieke formulierbestanden er als volgt uitzien:

Form1.cs
Form1.designer.cs
MyFormerFormName.resx
Form1.resx

dan houdt dat meestal in dat je het formulier een andere naam hebt gegeven, maar dat Visual Studio het oude .resx-bestand niet heeft verwijderd. Zodra u het bestand (in dit voorbeeld MyFormerFormName.resx) handmatig verwijdert, zou de fout bij de volgende build verdwenen moeten zijn.


Antwoord 2, autoriteit 50%

Duplicaten vinden door het projectbestand te bewerken

  1. Let op de naam van de .resx-fout.

  2. Ontlaad het project eerst door met de rechtermuisknop op uw project te klikken en klik vervolgens op Unload Project.

  1. Klik nogmaals met de rechtermuisknop op uw project en klik op project bewerken.

Het zal je wat code laten zien, kijk (of Searchin het bestand voor de resx in stap 1) voor de dubbele waarden die er in mijn geval zo uitzien

<EmbeddedResource Include="frmTerminalSerial.resx">
      <DependentUpon>frmTerminalSerial.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmVisual.resx">
      <DependentUpon>frmVisual.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmVisual.resx">
      <DependentUpon>frmVisual.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
      <SubType>Designer</SubType>
</EmbeddedResource>

Let op dit gedeelte, het is een duplicaat!

<EmbeddedResource Include="frmVisual.resx">
      <DependentUpon>frmVisual.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmVisual.resx">
      <DependentUpon>frmVisual.vb</DependentUpon>
</EmbeddedResource>

Verwijdereen ervan zodat het er zo uitziet

<EmbeddedResource Include="frmTerminalSerial.resx">
      <DependentUpon>frmTerminalSerial.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmVisual.resx">
      <DependentUpon>frmVisual.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
      <SubType>Designer</SubType>
</EmbeddedResource>

Sla het op, klik met de rechtermuisknop op uw project en klik vervolgens op project opnieuw laden. Je bent klaar!


Antwoord 3, autoriteit 8%

Normaal gesproken, als u een migratie als deze maakt

Add-Migration "UpdateProducts"

Visual Studio maakt een migratie met een klassenaam zoals UpdateProducts. Als u later een nieuwe migratie toevoegt met dezelfde migratienaam, genereert deze een migratie met een klassenaam zoals UpdateProducts1., waarbij automatisch een verhoogd cijfer aan het einde wordt toegevoegd als achtervoegsel. Elke keer dat u een nieuwe migratie genereert, gaat het aantal met één omhoog.

In ons geval raakte VS om de een of andere reden in de war en begon met het genereren van volgende migraties met dezelfde klassenaam als de bestaande migratie, zodat er twee automatisch gegenereerde migraties waren met dezelfde naam.

Het eenvoudigweg wijzigen van de klassenaam van de nieuwe migratie lost het probleem op.


Antwoord 4, autoriteit 4%

ik heb even gezocht
ik had hetzelfde probleem
het is waarschijnlijk omdat je formulier twee .resx . heeft
als je er een probeert te verwijderen, is het probleem verdwenen
mijn formulier:

Form1.Designer.cs
Form1.resx
Log_in.resx
Form1

ik heb Log_in.resx verwijderd en mijn programma werkte weer


Antwoord 5, autoriteit 4%

Ik heb dit probleem zojuist ontvangen met de VS 2019-community-editie.

Ik had geen dubbele .resx-bestanden. Ik had geen dubbele .cs-bestanden.
Ik kon de oplossing niet online vinden.

Om het probleem op te lossen, heb ik de oplossing opgeschoonden vervolgens opnieuw gestartVS.
Geen idee waarom, maar het werkte. Ik hoop dat dit helpt.


Antwoord 6, autoriteit 2%

Zorg ervoor dat je geen twee .resx-bestanden hebt. Zie in uw project onder YourServiceName.cs. Werkt voor mij.


Antwoord 7

Dit is mij net overkomen. Ik had per ongeluk een formulier “slepen en neerzetten” in een ander formulier. Het maakte er uiteindelijk een kopie van met de naam “Kopie van”. Ik heb het verwijderd en het probleem was weg.


Antwoord 8

Dit overkwam mij toen ik een formulier kopieerde om de meeste functionaliteit te hergebruiken en het formulier vervolgens hernoemde. Ik ging naar de map waarnaar verwezen werd, ontdekte dat er in feite maar één bestand was, kopieerde het bestand in kwestie, hernoemde het om naar de naam van mijn nieuwe formulier te verwijzen en plakte het nieuwe bestand vervolgens terug in de map.

Ik denk niet dat dit een goede gewoonte is (ik ben nieuw in C#), maar het werkte wel, in plaats van alles opnieuw te moeten maken. Ik moest ook de naam van het formulier op een paar plaatsen in de oplossing bijwerken, verrassend in de oorspronkelijke vorm en in de nieuwe vorm.

Het kopiëren van formulieren lijkt geen goed idee.


Antwoord 9

In mijn geval werd het probleem veroorzaakt door een EmbeddedResource-tag voor een designer.resx-bestand dat op de een of andere manier werd toegevoegd aan het .csproj-bestand.

Specifiek het volgende:

<EmbeddedResource Include="Forms\frmMenu.designer.resx">
      <DependentUpon>frmMenu.designer.cs</DependentUpon>
</EmbeddedResource>

Antwoord 10

Ik had het probleem en het werd veroorzaakt omdat ik een gedeeltelijke klassevan een aangepast besturingselementhad.

Ik had per ongeluk een .resx-bestand gemaakt voor de gedeeltelijke

Ik denk dat ik dit heb gedaan door op shift F7 op de gedeeltelijke klasse te drukken en het lege ontwerperformulier te produceren.

Het verwijderen van het .resx-bestand van de gedeeltelijke klasse heeft het voor mij opgelost. Ik gebruikte versiebeheer en het gaf aan dat het een nieuw bestand was.

Hopelijk helpt dit


Antwoord 11

Zoek in alle projecten de klasse gerapporteerd in de foutenlijst, zoals in dit vraaggeval DryWash.WorkersScreenhet kan worden herhaald in een ander bestand met een andere bestandsnaam maar binnen dezelfde klassenaam.


Antwoord 12

Ik kreeg dit probleem toen ik per ongeluk een migratie genereerde met dezelfde naam als een bedrijfsobject.
De oplossing is om de migratie te verwijderen en vervolgens een nieuwe aan te maken met een andere naam.


Antwoord 13

In mijn geval moest ik de .csprojopenen in Note++ en zochten naar .resx-bestanden in EmbeddedResource-tags. Ik vond enkele vreemde .resxmet vreemd taalachtervoegsel example.aa.resxandere bestanden waren normale bestanden, ofwel zonder taalachtervoegsel of met *.ar-achtervoegsel, ik heb de enge embedded resource-tag verwijderd en dat loste het probleem voor mij op.


Antwoord 14

Ik had vandaag dit probleem.

In zekere zin had Form.Designer een extensie van .resx, voor mijn oplossing was het TestForm.Designer.resx. Er was al een TestForm.resx. Ik heb de oplossing schoongemaakt, VS afgesloten, het bestand TestForm.Designer.resx verwijderd en VS opnieuw gestart. Ik had nog steeds de fout.

Ik sloot toen VS af en opende het .proj-bestand met NotePad++ en ontdekte dat er nog steeds naar TestForm.Designer.resx werd verwezen. Ik heb de ingesloten bron verwijderd.

<EmbeddedResource Include="TestForm.Designer.resx">
    <DependentUpon>TestForm.Designer.vb</DependentUpon>
</EmbeddedResource>

Toen opende ik VS en bouwde….Het werkt weer!


Antwoord 15

Dit overkwam mij toen ik de opdracht Add Migrationuitvoerde en dezelfde naam opgaf als mijn projectnaam als migratieklasse. Ik heb alle migratieklassen verwijderd en een nieuwe toegevoegd, oplossing opnieuw gebouwd.


Antwoord 16

In mijn optie, help één *.resx te verwijderen voor elk formulier waarin de fout optrad

Gedetailleerde INFO

In ons project hebben we 6 *.resx voor elk formulier voor lokalisatie (DE,GB,SK,RU,SRB) en als ik FormName.sr-Latn-CS.resx verwijder (van VS) dan is de fout verdwenen. Als ik verwijderde FormName.en-GB.resx probeerde, hielp het niet. Fout verdwenen alleen voor het verwijderen van sr-Latn-CS.resx (misschien kan een ontwerper twee – ). Ik zag deze fout voor het eerst toen ik het project migreerde van VS 2010 Win 7 naar VS2010 Win 10.


Antwoord 17

Als dit probleem zich voordeed terwijl u met EntityFramework aan het werken was en probeerde te Add Migration, is de oplossing eenvoudig: verwijder de map Migrations(in de Solution Explorer) en voer Enable-Migrationsuit. Back-upmigraties indien nodig.


Antwoord 18

Voor mij was het probleem het kopiëren en plakken van een .aspx, en niet het hernoemen van de code achter klassebestanden zodat deze overeenkwam met de naam van het gekopieerde aspx-bestand. Het wijzigen van de code achter en de namen van de ontwerperklassen werkte.


Antwoord 19

Ik had hetzelfde probleem, wat ik deed was mijn migratiebestanden verwijderen (via de studio), nadat ik de database had bijgewerkt.


Antwoord 20

Zoals @WimOmbelets in zijn antwoord van 2013 aangaf, is het kopiëren van een formulier een zeer zekere manier om deze vervelende fout te reproduceren, in ieder geval in VS 2017, 2019 en 2022.

Zoals Vince De Giorgio zei in zijn antwoord van 2019, had ik ook geen dubbele .resx- of .cs-bestanden en ook geen dubbele …EmbeddedResource Include= …/>-tags in .csproj.

Het verwijderen van .resx-bestanden (pictogrammen verdwenen, voor de hand liggend) voor beide betrokken formulieren, de oplossing opschonen en vervolgens VS opnieuw opstarten is een armzalige manier om op te lossen, want elke keer dat ik opnieuw een pictogram of een andere bron toevoeg, dezelfde vervelende fout. Het is nog erger: om te herstellen moest ik Git alle modificaties opbergen; als ik alle wijzigingen handmatig terugzet, tot het punt dat Git geen wijzigingen meer herkent, gaat de fout door (!!!) zelfs na het opschonen, opnieuw opstarten van VS en opnieuw opbouwen.

Om het probleem in VS 2019 en 2022 op te lossen:

Elke keer dat ik een formulier wil kopiëren, doe ik:

  1. Sluit het formulier uit dat moet worden gekopieerd van het project (uitsluiten, NIET VERWIJDEREN!)
  2. In Windows Verkenner maak ik een kopie van een formulier en open ik deze (.cs en designer.cs) met visuele code (wat dan ook)
  3. In Visual Studio maak ik Voeg een nieuw formulier toe met een andere naam – natuurlijk
  4. Plak designer.cs- en .cs-codes uit VS-code terug; verander naamruimte, klassenaam en Ctor
  5. Opnieuw opnemen in vorig projectformulier
  6. Geniet

Nooit meer dit probleem gehad.


Antwoord 21

Ik dacht dat ik op minstens één willekeurig forum zou posten nadat ik deze fout had tegengekomen in de hoop dat iemand anders is om iemand te verslaan. Ik zocht veel Google-sites en niemand had mijn exact probleem. Mijn zaak was vergelijkbaar, maar op sommige manieren anders.

Ik had eigenlijk een gedeeltelijke klasse verspreid over meerdere bestanden. Deze klasse was een formulierklasse. Dit was op zichzelf succesvol en veroorzaakte geen probleem. Dit zorgde ervoor dat de nieuwe klasse echter zijn unieke bestandsnaam behoudt met behoud van een gesplitste ‘klassingsformulier’. Het was hoogstwaarschijnlijk geen koosjere praktijk, maar niet hoe minder het gebeurde op dat moment. Het leek een goed alternatief om veel rommelig code uit de weg te krijgen. Onnodig te zeggen, de volgende keer zal ik gewoon regio’s of ander alternatief gebruiken.

De fout die vervolgens is opgetreden toen ik probeerde de code te nemen in het 2e bestand en kopieer / plak in een nieuw non-formulierbestand met slechts een klasse, zoals ik had bedoeld bij het in essentie veranderen in een bibliotheek en de code een beetje in een bibliotheek wenden. meer juiste en leesbaarder. Omdat ik niet precies wist wat de fout had veroorzaakt toen het gebeurde en een kleine overvloed aan veranderingen had gemaakt, kostte het wat tijd om te volgen. Zelfs na het omkeren van de code, slaagde ik erin een paar methoden te missen.

De methoden voor de hoofdvorm die het klassenformulier bevat met initializecomponent en vormconstructeur (belasting). Een 2e kopie van deze methoden bleek resultaat in dezelfde fout. Zelfs na het verwijderen van de extra code en extra formulier- en resxbestanden. Ik heb zelfs geprobeerd het legitieme resx-bestand te verwijderen, omdat het niet actief nodig was. Ik kon het niet effectief volgen, omdat er fouten naar de legitische versies van deze codesegmenten wezen. Ctrl + F en back-upkopieën zijn uw vrienden.

Hoop dat het iemand helpt


Antwoord 22

Ik bevestig het antwoord van Wimombelets gegeven in de opmerkingen. Dit kan blijkbaar gebeuren wanneer u een klasse in VS2012 hernoem (ik had dit nooit in een eerdere versie).

Ik kan niet zeker weten dat dit de oorzaak is, maar één ding dat ik anders heb gedaan van mijn normale manier, wordt ik f2 gebruikt om het te hernoemen in tegenstelling tot het wijzigen van het en vervolgens op Control te drukken -.


Antwoord 23

Ik had hetzelfde probleem toen ik een van mijn FormClasses hernoemde met Ctrl + R + RWELKE VS OM DINGEN STANDELIJK TE HERENEN.

Dan heb ik enigszins twee klassen met dezelfde klasnaam op 2 verschillende bestanden (*. CS ).

class Bar { ... } // From Bar.cs
class Bar { ... } // This should've been Foo, from Foo.cs

De twee Baraangeeft hetzelfde resourcebestand dat een van hen niet zou moeten.

Het is een triviaal probleem, maar soms kan moeilijk zijn om de oorzaak te vinden, omdat het kijkt naar CS-bestanden gewoon niet zeggen welke waarvoor u moet zoeken.

Other episodes