Kompilatorvarning (nivå 1) CS1699

Använd kommandoradsalternativet "compiler_option" eller lämpliga projektinställningar i stället för "attribute_name"

För att signera en sammansättning är det nödvändigt att ange en nyckelfil. Innan C# 2.0 angav du nyckelfilen med CLR-attribut i källkoden. Dessa attribut är nu inaktuella.

Från och med C# 2.0 bör du använda signeringssidan för Projektdesignern eller Assembly Linker för att ange nyckelfilen.

Projektdesignerns signeringssida är den bästa metoden. Mer information finns i Signeringssida, Projektdesigner och Hantera sammansättning och Manifestsignering.

här: Signera en sammansättning med ett starkt namn använder följande kompilatoralternativ:

Dessa attribut har blivit inaktuella av följande skäl:

  • Det uppstod säkerhetsproblem på grund av att attributen bäddades in i de binära filer som producerades av kompilatorn. Alla som hade din binärfil hade också nycklarna lagrade i den.

  • Det uppstod användbarhetsproblem på grund av att sökvägen som angavs i attributen var relativ till den aktuella arbetskatalogen, som kan ändras i den integrerade utvecklingsmiljön (IDE) eller till utdatakatalogen. De flesta gånger är det troligt att nyckelfilen är .. \\.. \\mykey.snk. Attribut gör det också svårare för projektsystemet att signera satellitsammansättningar korrekt. När du använder kompileringsalternativen i stället för dessa attribut kan du använda en fullständigt kvalificerad sökväg och filnamn för nyckeln utan att något bäddas in i utdatafilen. Projektsystemet och källkodskontrollsystemet kan manipulera den fullständiga sökvägen korrekt när projekt flyttas runt. projektsystemet kan upprätthålla en projektrelativ sökväg till nyckelfilen och fortfarande skicka en fullständig sökväg till kompilatorn. andra byggprogram kan lättare signera utdata genom att skicka rätt sökväg direkt till kompilatorn i stället för att generera en källfil med rätt attribut.

  • Användning av attribut med vänsammansättningar kan hämma kompilatorns effektivitet. När du använder attribut vet kompilatorn inte vad nyckeln är när den måste bestämma om vänskap ska beviljas eller inte och därför måste den gissa. I slutet av kompilering kan kompilatorn verifiera gissningen när den äntligen känner till nyckeln. När nyckelfilen har angetts med ett kompilatoralternativ kan kompilatorn omedelbart bestämma om vänskap ska beviljas.

Exempel

Följande exempel genererar CS1699. Lös felet genom att ta bort attributet och kompilera med /delaysign.

// CS1699.cs  
// compile with: /target:library  
[assembly:System.Reflection.AssemblyDelaySign(true)]   // CS1699  

Se även