Skapa ett ASP.NET projekt i Visual Studio resulterar i kompilatorfelmeddelande CS0433

Ursprunglig produktversion: Visual C++
Ursprungligt KB-nummer: 2028526

Sammanfattning

När du skapar ett ASP.NET projekt med hjälp av Microsoft Visual Studio kan du slumpmässigt se ett felmeddelande som liknar följande:

Kompilatorfelmeddelande: CS0433: Typen "ASP.summary_common_controls_notes_ascx" finns i både "c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8 910\App_Web_msftx123.dll" och "c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msfty456.dll"

Beskrivning: Ett fel uppstod under kompilering av en resurs som krävs för att hantera den här begäran. Granska följande specifika felinformation och ändra källkoden på rätt sätt.

Källfel: Rad 100: </div>

Rad 101: <h3 class="entry">New Notes</h3>

Rad 102: <bni:details id="details" runat="server" />

Rad 103: <span class="RedZone">1450</span>

Rad 104: <p>Sammanfattning.</p>

Källfil: d:\http\post\publisher\default.aspx Rad: 102

Vanliga scenarier där det här felet kan inträffa beskrivs i följande avsnitt.

Scenario 1: Två sammansättningar i samma bin-mapp

Beskrivning: En vanlig orsak till det här felet är när det finns två sammansättningar i samma mapp för webbprogrammets lagerplats som innehåller två klassdefinitioner, men som har samma klassnamn. Detta kan inträffa om fler än en Default.aspx kompilerats till en enda sammansättning. Detta inträffar vanligtvis när huvudsidan (Default.master) och ASPX-standardsidan (Default.aspx) båda deklarerar en _Default-klass.

Lösning: Ändra klassnamnet på huvudsidan (från _Default i de flesta fall) och återskapa projektet. Det är viktigt att lösa eventuella namnkonflikter mellan klasser.

Scenario 2: Flera referenser till samma sammansättning

Beskrivning: Referenssökvägarna i Visual Studio används för att ange mappsökvägen för sammansättningsreferenser som används av projektet. Det är möjligt att sökvägen innehåller en sammansättning och att sammansättningen innehåller samma klassnamn. Det kan finnas flera referenser som har lagts till i samma sammansättning (eventuellt olika i version eller namn) som orsakar en namnkonflikt.

Lösning: Ta bort den gamla versionsreferensen. Högerklicka på webbplatsen i Visual Studio och kontrollera referenserna i egenskaperna.

Scenario 3: Ändringar i standardbehörigheter

Beskrivning: När ett ASP.NET webbprogram kompileras placeras den kompilerade koden som standard i mappen Temporary ASP.NET Files. Som standard ges åtkomstbehörigheterna till det ASP.NET lokala användarkontot. Kontot har de behörigheter med hög förtroende som krävs för åtkomst till kompilerad kod. Det är möjligt att det fanns vissa ändringar i standardbehörigheterna, och ändringarna kan orsaka versionskonflikter. En annan möjlighet är att antivirusprogram oavsiktligt kan låsa en sammansättning.

Lösning: Rensa mappen Temporary ASP.NET Files för allt innehåll.

Scenario 4: Batchkompilering

Beskrivning: När batchattributet i filen web.config är inställt på Sant, eliminerar det fördröjningen som orsakas av kompilering som krävs när du kommer åt en fil för första gången. ASP.NET förkompilerar alla icke-kompilerade filer i batchläge. Det här batchläget orsakar fördröjningar första gången filerna kompileras.

Om batchattributet anges till False kan eventuella maskerade kompileringsfel som finns i programmet exponeras, men rapporteras inte. Ännu viktigare är att den uppmanar ASP.NET att dynamiskt kompilera enskilda .aspx/.ascx-filer i separata sammansättningar, i stället för till en enda sammansättning.

Lösning: Ange batch=False i kompileringsavsnittet <> i web.config. Den här åtgärden bör betraktas som en tillfällig lösning. Batch=False i kompileringsavsnittet har en betydande prestandapåverkan på byggtiderna för programmet i Visual Studio.

Scenario 5: Redigering av web.config startar om AppDomain

Beskrivning: Om du ändrar web.config-filen för ett ASP.NET-program eller ändrar en fil i mappen bin (till exempel att lägga till, ta bort eller byta namn) startas AppDomain om. När dessa åtgärder inträffar går alla sessionstillstånd förlorade och cachelagrade objekt tas bort från cacheminnet när webbplatsen startas om. Problemet kan orsakas av ett inkonsekvent tillstånd i webbprogrammet.

Lösning: Utlös en AppDomain-omstart genom att trycka på (redigera) filen web.config.

Scenario 6: Den ändrade källkoden har ännu inte dynamiskt omkompilerats

Beskrivning: Du kan lagra källkoden i mappen App_Code och koden kompileras automatiskt vid körning. Den resulterande sammansättningen är tillgänglig för annan kod i webbprogrammet. Mappen App_Code fungerar därför ungefär som mappen Bin, förutom att du kan lagra källkod i den i stället för kompilerad kod. Klassen kommer att omkompileras när det sker en ändring i källfilen. Om det uppstår en konflikt på grund av en inaktuell sammansättning kan det lösa problemet genom att tvinga fram en kompilering.

Lösning: Tryck på en fil i mappen Bin eller App_Code för att utlösa en fullständig omkompilering.