Navnet, placeringen og indholdet af denne fil er en del af arbejdsområde-API'et. Det betyder, at der er garanti for, at de ikke ændres på en måde, som fjerner eksisterende brugere af filen. Rettigheden til at tilføje yderligere elementer og attributter til koden reserveres imidlertid til mulige fremtidige tilføjelser til filen. Derfor skal klienter, som læser indholdet af beskrivelsesfilen, acceptere ukendte elementer og attributter.
Klienter, som ændrer, sletter eller erstatter projektbeskrivelsesfilen, gør dette på eget ansvar. Projekter med ugyldige eller manglende beskrivelsesfiler er generelt ikke anvendelige. Hvis der findes en ugyldig beskrivelsesfil ved start af arbejdsområdet, lukkes projektet, og det vil ikke være muligt at åbne det, før projektbeskrivelsesfilen er blevet repareret. Generelt forsøger arbejdsområdet ikke automatisk at reparere en manglende eller ugyldig beskrivelsesfil. En undtagelse er, at de manglende projektbeskrivelsesfiler bliver genereret igen, når arbejdsområdet gemmes, og i forbindelse med kald til IProject.setDescription.
Ændringer til projektbeskrivelsesfilen har for det meste den samme virkning som at ændre projektbeskrivelsen via IProject.setDescription. En undtagelse er, at tilføjelse eller fjernelse af projektnaturer ikke aktiverer den tilhørende naturs konfigurations- eller dekonfigurationsmetode. En anden undtagelse er, at ændringer til projektnavnet ignoreres.
Hvis et nyt projekt oprettes på en placering, som indeholder en eksterende projektbeskrivelsesfil, anvendes indholdet af den pågældende fil som projektbeskrivelse. En undtagelse er, at projektnavnet i filen bliver ignoreret, hvis det ikke matcher med navnet på det projekt, der oprettes. Hvis beskrivelsesfilen på disken er ugyldig, oprettes projektet ikke.
Konfigurationskode:
<!ELEMENT projectDescription (name, comment, projects, buildSpec, natures, linkedResources)>
<!ELEMENT name EMPTY>
<!ELEMENT comment EMPTY>
<!ELEMENT buildSpec (buildCommand)*>
<!ELEMENT buildCommand (name, arguments)>
<!ELEMENT name EMPTY>
<!ELEMENT arguments (dictionary?)>
<!ELEMENT dictionary (key, value)*>
<!ELEMENT key EMPTY>
<!ELEMENT value EMPTY>
<!ELEMENT natures (nature)*>
<!ELEMENT nature EMPTY>
<!ELEMENT linkedResources (link)*>
<!ELEMENT link (name, type, location)>
<!ELEMENT name EMPTY>
<!ELEMENT type EMPTY>
<!ELEMENT location EMPTY>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Vinterprojekt</name>
<comment>Dette er et køligt projekt.</comment>
<projects>
<project>org.seasons.sdt</project>
<project>koldt</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.seasons.sdt.seasonBuilder</name>
<arguments>
<dictionary>
<key>klima</key>
<value>koldt</value>
</dictionary>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.seasons.sdt.seasonNature</nature>
</natures>
</projectDescription>
API-oplysninger: Indholdet af projektbeskrivelsesfilen er knyttet til grænsefladen org.eclipse.core.resources.IProjectDescription vha. mapping. Projektbeskrivelsesfilen kan overskrives af metoden IProject.setDescription().