I have posted that a couple of months ago. Somebody was asking it yesterday in the newsgroup so that is why I am reposting it here again:
I am currently working on some security problem within a Web part (more on this probably later). While overviewing all of my possible solutions, I read about the WebPartPermission and the SharePointPermission classes in the Microsoft.SharePoint.Security namespace. Ok, so far no problem.
Curious as I am, I wanted to use these members within a sample project.
First thing you try of course is declare the namespace. It is however not there since you need to reference the Microsoft.SharePoint.Security.dll for this.
Then you look into the list of references (the first tab displays all the GAC-deployed assemblies). Nope! It is not in there.
Now, not every assembly in the GAC is displayed within that list in VS.NET. Just to make sure, I looked in the GAC and yes, it is there. So probably it is physically stored in some SharePoint folder.

After a search on my complete disk, the result is nothing.
So it seems that during the installation of SharePoint, Microsoft is dropping DLLs in the GAC and then removing the original DLLs. What is the reason why they do not leave this dll in the ISAPI folder of SharePoint where you also find the Microsoft.SharePoint.dll and the other portal dlls? Are we not supposed to use that dll directly?
Well, if you need to reference this dll you can do the following. Go to you the following folder:
C:\WINDOWS\assembly\GAC\Microsoft.SharePoint.Security\11.0.0.0__71e9bce111e9429c
Here you find the dll. Copy this dll into a local folder and reference the dll from there in VS.NET. Don't worry, the application will always use the one that has been deployed in the GAC.