Getting Current Project Loaded
Messages   Related Types
This message was discovered on microsoft.public.dotnet.framework.aspnet.buildingcontrols.
Responses highlighted in red are from those people who are likely to be able to contribute good, authoratitive information to this discussion. They include Microsoft employees, MVP's and others who IMHO contribute well to these kinds of discussions.
Post a new message to this list...

johndoe@driver.net
I am building an ASP.NET Custom Web Control and I am wondering if there
is any standard method when implementing ControlDesigner for a Class to
determine what directory the project that that the Web Page that the control
has been embedded into is in while at Design Time.
so that if MyControl is embedded in PJ.aspx - i would like to get the ~/
folder for that current project that it is embedded in.

I was hoping for something that ControlDesigner or something else would
expose so that other Designers like (SharpDevelop/Delphi etc) would be able
to provide their own information for this .

Reply to this message...
 
    
[MSFT] (VIP)
Hi John,

Did you want to get the parent page's path? If so, you may try following
string:

this.Parent.Page.MapPath(".")

Luke

Reply to this message...
 
    
johndoe@driver.net (VIP)
I apologize if I did not use the word Design Time and Control Designer enough times in my original post.

I am building an ASP.NET Custom Web Control and I am wondering if there is any standard method when
_____________implementing ControlDesigner ______________
for a Class to determine what directory the project that that the Web Page that the control has been embedded into is in while at
_______________________Design Time____________________
, so that if MyControl is embedded in PJ.aspx - i would like to get the ~/
folder for that current project that it is embedded in.

I was hoping for something that
__________ControlDesigner ____________
or something else would expose so that
________other Designers like (SharpDevelop/Delphi etc) _________
would be able to provide their own information for this .

"[MSFT]" wrote:

[Original message clipped]

Reply to this message...
 
    
[MSFT] (VIP)
Hello,

For ControlDesigner class, you may get the web control this designer is
designing from its Component property. After get the IComponent, you can
get it and its parent component's properties.

Luke

Reply to this message...
 
    
johndoe@driver.net (VIP)
I fail to see how that answers my original question of getting the project folder that the web control is embedded in.
[quote]determine what directory the project[/quote]
[quote]when implementing ControlDesigner [/quote]

Xyz web control is going to know no more about the Project Directory then xyz's parent or xyz's parent's parent.

"[MSFT]" wrote:

[Original message clipped]

Reply to this message...
 
    
Adam Barker
John,
This code in your designer class obtains a DTE reference via IServiceContainer and some reflection. You can then access everything in the solution and its projects:

// Acquire service container

IServiceContainer objServiceContainer = (IServiceContainer)this.Component.Site.GetService(typeof(IServiceContainer));

object objServiceContainerServices = objServiceContainer.GetType().InvokeMember("Services",

BindingFlags.Instance|BindingFlags.NonPublic|BindingFlags.GetProperty,

null,

objServiceContainer,

new object[] { }

);

// Create a type of CodeDomProvider

Type domType = Type.GetType("System.CodeDom.Compiler.CodeDomProvider");

object objCodeDomProvider = ((Hashtable)objServiceContainerServices)[domType];

EnvDTE.ProjectItem objProjectItem = (EnvDTE.ProjectItem)objCodeDomProvider.GetType().InvokeMember("projectItem",

BindingFlags.Instance|BindingFlags.NonPublic|BindingFlags.GetField,

null,

objCodeDomProvider,

new object[] { }

);

// Create an EnvDTE.Project object

EnvDTE.Project objProject = objProjectItem.ContainingProject;

EnvDTE.Solution objSolution = objProject.DTE.Solution;

Reply to this message...
 
    
johndoe@driver.net (VIP)
Thank you.
That seems to be what I needed hopefully. Now i just need to find out how well that works with other ASP.NET Desingers like the Web Matrix.

"Adam Barker" wrote:

[Original message clipped]

Reply to this message...
 
    
Antonio Bakula
On Mon, 19 Jul 2004 20:01:02 -0700, Click here to reveal e-mail address
<Click here to reveal e-mail address> wrote:

[Original message clipped]

I tried to make such component myself, you can check it out at :

http://www.antoniob.com/projects/PDesignTimeTools.aspx

it uses similar code as Adam Barker posted for VS.NET, but my component
also works for Delphi.NET.

I tried to do the same for WebMatrix but no success :(

*PLEASE* mail me or post here if you find the way to get project folder in
design time for WebMatrix.

btw. PDesingTimeTools is free component with source code (Delphi.NET)

--
http://www.antoniob.com/
remove antispam XremoveX from e-mail !
Reply to this message...
 
 
EnvDTE.Project
EnvDTE.ProjectItem
EnvDTE.Solution
System.CodeDom.Compiler.CodeDomProvider
System.ComponentModel.Design.IServiceContainer
System.ComponentModel.IComponent
System.Reflection.BindingFlags
System.Type
System.Web.UI.Design.ControlDesigner
System.Windows.Forms.Design.ControlDesigner




Ad
MBR BootFX
Best-of-breed application framework for .NET projects, developed by Matthew Baxter-Reynolds and MBR IT
 
 Copyright © Matthew Baxter-Reynolds 2001-2008. '.NET 247 Software Development Services' is a trading style of MBR IT Solutions Ltd.
Contact Us - Terms of Use - Privacy Policy - www.dotnet247.com