Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
It was confusing to see a property named "Object" on EndDTE.Project class (which returns an object of type System.Object), especially when the tooltip didnt provide any useful information. (It's actual type is a ComObject) Anyway, actually it returns an object of type VSLangProj.VSProject (assuming you have a reference to VSLangProj). I was just trying to add a reference to my project within the VS Package I was working on and that class gives me the functionality I was looking for. Long story short, in order to add a reference (GAC) programmatically to your project here's what needs to be done:
private void AddReference(EnvDTE.Project proj) {
VSLangProj.
VSProject vsProject = (VSLangProj.VSProject)proj.Object;
vsProject.References.Add(
"MyLibrary");
}
Comments
Anonymous
July 30, 2008
PingBack from http://blog.a-foton.ru/2008/07/envdte-adding-a-reference-to-a-project/Anonymous
May 01, 2009
What if it has multiple versions? Example: I want to add system.configuration.install as a reference to the current project. it has a 1.0 and a 2.0 version in the GAC on my machine. Basically, I'm writing an add-on. I'm allowing it to save references and allow you to add them to your future projects. this is just an "extra" for the main app. now if i try to get a reference from a VSWebSite, I can't get the actual path, just the strong name (ex: "System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"). I was hoping I could add this reference on to a regular project using ((VSLangProj.VSProject)project.Object).References.Add(strStrongName) but it doesn't seem to work.Anonymous
May 01, 2009
haha. got it to work. no idea why it wasn't working before. greeeeat.Anonymous
May 01, 2009
Nope. looks like i can pass just the name, and it will pick the first one with that name. ugh.Anonymous
May 05, 2009
I have tried adding a reference using a fully qualified assembly name like "System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" and it worked. (I have the same assembly with another version in my GAC and it added a reference to the right one) Also, if you wish to add a reference to a project (not to a dll directly), I'd suggest you to take a look at the AddProject method. URL = http://msdn.microsoft.com/en-us/library/vslangproj.references.addproject(VS.80).aspx