HighTechTalks DotNet Forums  

Multi-Project Template - Replace Parameters

Visual Studio.net (General) microsoft.public.vsnet.general


Discuss Multi-Project Template - Replace Parameters in the Visual Studio.net (General) forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
Mythran
 
Posts: n/a

Default Multi-Project Template - Replace Parameters - 09-26-2008 , 03:45 PM






I'm trying to create a multi-project template. On the New Project dialog,
the user would select this template and enter a name in the Name box (as if
they were creating a regular project). My multi-project vstemplate file
contains the following:

<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>MCIS Web Solution Template</Name>
<Description>MCIS Standard Web Solution Template</Description>
<Icon>__TemplateIcon.ico</Icon>
<ProjectType>VisualBasic</ProjectType>
</TemplateData>

<!-- Template Content -->
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink ReplaceParameters="true"
ProjectName="Schema">Source\Schema\Schema.vstempla te</ProjectTemplateLink>
</ProjectCollection>
<CustomParameters>
<CustomParameter Name="$solutionname$"
Value="MCIS.Applications.$safeprojectname$" />
</CustomParameters>
</TemplateContent>
</VSTemplate>

How would I go about passing the $solutionname$ parameter to the Schema
template so the Schema.vbproj file can set the root namespace and assembly
name to MCIS.Applications.<solution name here>.Schema? I'm kinda stuck. In
my Schema.vstemplate file, I can set custom parameters, but I don't know how
to create a custom parameter that has the name of the multi-project solution
as the value of the parameter....the following is my Schema.vstemplate that
does not work:


<VSTemplate Version="2.0.0" Type="Project"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<!-- Template Information -->
<TemplateData>
<Name>Schema</Name>
<Description>MCIS Schema Project Template</Description>
<Icon>__TemplateIcon.ico</Icon>
<ProjectType>VisualBasic</ProjectType>
<CreateNewFolder>true</CreateNewFolder>
<ProvideDefaultName>true</ProvideDefaultName>
<DefaultName>Schema</DefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
</TemplateData>

<!-- Template Contents -->
<TemplateContent>
<Project File="Schema.vbproj" ReplaceParameters="true"
TargetFileName="Source\Schema\Schema.vbproj">
<Folder Name="classes">
<Folder Name="searchcriteria" />
</Folder>
<Folder Name="datasets" />
<Folder Name="My Project">
<ProjectItem
ReplaceParameters="true">Application.myapp</ProjectItem>
<ProjectItem
ReplaceParameters="true">Application.Designer.vb</ProjectItem>
<ProjectItem
ReplaceParameters="true">AssemblyInfo.vb</ProjectItem>
<ProjectItem
ReplaceParameters="true">Settings.settings</ProjectItem>
<ProjectItem
ReplaceParameters="true">Settings.Designer.vb</ProjectItem>
</Folder>
</Project>
<CustomParameters>
<CustomParameter Name="$mcisnamespace$"
Value="$solutionname$.Schema" />
</CustomParameters>
</TemplateContent>
</VSTemplate>

In my Schema.vbproj I have:
<Project .. >
<PropertyGroup>
...
<RootNamespace>$mcisnamespace$</RootNamespace>
...
</PropertyGroup>
...
</Project>

Thanks,
Mythran


Reply With Quote
  #2  
Old   
Hongye Sun [MSFT]
 
Posts: n/a

Default RE: Multi-Project Template - Replace Parameters - 09-29-2008 , 03:22 AM






Hi Mythran,

Thank you for posting here!

I notice that you have posted the same question in our
microsoft.public.vstudio.extensibility newsgroup, which I have already
responded. So please check my answer there and if you need any further
assistance on this particular issue, please reply to me in that thread so
that I can follow up with you in time.

Please go to
http://www.microsoft.com/communities/newsgroups/en-us/?dg=microsoft.public.v
studio.extensibility&mid=bb27115d-2a8b-4131-bb3e-1c74b3b13688 to view my
reply.

For your convenience, I have included my reply as following:

---------------------
Do you mean that you want to pass the project name filled by the user when
creating a new project by multiple project template to its sub-project
template as a parameter? So that the sub-project name can contain the user
input project name. Please correct me if I am wrong.

As far as I know, custom parameters will not inherit from root template to
its sub-project templates. However, some default parameters can be passed
to its sub-project templates.
In root template file, we use <ProjectTemplateLink> element to include
sub-project template. Its attribute "ProjectName" will be considered as
default parameters "$projectname$" and "$safeprojectname$" in sub-project
templates. We could also use parameters to specify the "ProjectName"
attribute no matter we set "ReplaceParameters" attribute or not. (Note that
there is no "ReplaceParameters" attribute in <ProjectTemplateLink> element
schema.)

Now we could do like this:
1. Define a custom parameter named "$solutionname$" with value
"MCIS.Applications.$safeprojectname$".
2. Specify the attribute "ProjectName" as "$solutionname$.Schema" in
<ProjectTemlateLink> element.
3. In the Schema.vbproj file, using "$projectname$" or "$safeprojectname$"
to specify its <RootNamespace> element.

Here is the vstemplate files after change:

Root vstemplate file:
-------------------------------------------------------
<VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>MCIS Web Solution Template</Name>
<Description>MCIS Standard Web Solution Template</Description>
<Icon>__TemplateIcon.ico</Icon>
<ProjectType>VisualBasic</ProjectType>
</TemplateData>

<!-- Template Content -->
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink
ProjectName=""$solutionname$.Schema">Source\Schema \Schema.vstemplate</Projec
tTemplateLink>
</ProjectCollection>
<CustomParameters>
<CustomParameter Name="$solutionname$"
Value="MCIS.Applications.$safeprojectname$" />
</CustomParameters>
</TemplateContent>
</VSTemplate>
-------------------------------------------------------

Schema.vstemplate
-------------------------------------------------------
<VSTemplate Version="2.0.0" Type="Project"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<!-- Template Information -->
<TemplateData>
<Name>Schema</Name>
<Description>MCIS Schema Project Template</Description>
<Icon>__TemplateIcon.ico</Icon>
<ProjectType>VisualBasic</ProjectType>
<CreateNewFolder>true</CreateNewFolder>
<ProvideDefaultName>true</ProvideDefaultName>
<DefaultName>Schema</DefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
</TemplateData>

<!-- Template Contents -->
<TemplateContent>
<Project File="Schema.vbproj" ReplaceParameters="true"
TargetFileName="Source\Schema\Schema.vbproj">
<Folder Name="classes">
<Folder Name="searchcriteria" />
</Folder>
<Folder Name="datasets" />
<Folder Name="My Project">
<ProjectItem
ReplaceParameters="true">Application.myapp</ProjectItem>
<ProjectItem
ReplaceParameters="true">Application.Designer.vb</ProjectItem>
<ProjectItem
ReplaceParameters="true">AssemblyInfo.vb</ProjectItem>
<ProjectItem
ReplaceParameters="true">Settings.settings</ProjectItem>
<ProjectItem
ReplaceParameters="true">Settings.Designer.vb</ProjectItem>
</Folder>
</Project>
</TemplateContent>
</VSTemplate>
-------------------------------------------------------

Schema.vbproj
-------------------------------------------------------
<Project .. >
<PropertyGroup>
...
<RootNamespace>$safeprojectname$</RootNamespace>
...
</PropertyGroup>
...
</Project>

-------------------------------------------------------

---------------------

Thank you and have a nice day!

Regards,
Hongye Sun (hongyes (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
msdnmg (AT) microsoft (DOT) com.

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://support.microsoft.com/select/default.aspx?target=assistance&ln=en-us.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.




Reply With Quote
  #3  
Old   
Bob Egan
 
Posts: n/a

Default Re: Multi-Project Template - Replace Parameters - 10-20-2008 , 05:37 AM



Parameters can be passed among sub projects using a wizard. Here's how I do it:

You have several projects in the zip file for that template. Each has its
own vstemplate file in addition to the master vstemplate.

1. Write a wizard (class library that implements IWizard). Here's the trick:
ALL VARIABLES THAT YOU WANT TO PASS AMONG PROJECTS MUST BE STATIC:

private static string namespace;

2. Add a form to accept input from the user.
3. Only show the form for the multi-project template:

public void RunStarted(object automationObject,
Dictionary<string, string> replacementsDictionary,
WizardRunKind runKind, object[] customParams)
{
if (runKind == WizardRunKind.AsMultiProject)
{
//show your form and handle the user input
}
}

4. Build the wizard with a strongly named key, and add to your GAC
5. Edit ALL vstemplate files to include the WizardExtension tag pointing to
your wizard.

That's all you need to do.

Hope this helps you.





Reply With Quote
  #4  
Old   
Mythran
 
Posts: n/a

Default Re: Multi-Project Template - Replace Parameters - 10-31-2008 , 09:26 AM





"Bob Egan" <Bob Egan (AT) discussions (DOT) microsoft.com> wrote

Quote:
Parameters can be passed among sub projects using a wizard. Here's how I
do it:

You have several projects in the zip file for that template. Each has its
own vstemplate file in addition to the master vstemplate.

1. Write a wizard (class library that implements IWizard). Here's the
trick:
ALL VARIABLES THAT YOU WANT TO PASS AMONG PROJECTS MUST BE STATIC:

private static string namespace;

2. Add a form to accept input from the user.
3. Only show the form for the multi-project template:

public void RunStarted(object automationObject,
Dictionary<string, string> replacementsDictionary,
WizardRunKind runKind, object[] customParams)
{
if (runKind == WizardRunKind.AsMultiProject)
{
//show your form and handle the user input
}
}

4. Build the wizard with a strongly named key, and add to your GAC
5. Edit ALL vstemplate files to include the WizardExtension tag pointing
to
your wizard.

That's all you need to do.

Hope this helps you.




This is what I ended up doing. Sorry it took me so long to reply (and the
original message may or may not still be on the server)...there were quite a
few issues with templates in Visual Studio 2008 that I had to use
workarounds for (modifying the sub-directory the projects get placed into
.... had to implement IDTWizard and use VSZ files for the projects so I had a
Wizard and template wizard for the projects).

Thanks

Mythran




Reply With Quote
  #5  
Old   
Kisalay Das
 
Posts: n/a

Default Re: Parameters can be passed among sub projects using a wizard. - 01-12-2012 , 05:55 AM



With pretty much similar requirement, I followed exactly your said steps, but still I'm not able to get it done. I mean, get sub projects replaced with parameter value when I am creating 2 projects from a template. Can I debug ? How ?

Thans in advance.

Quote:
On Friday, September 26, 2008 4:45 PM Mythran wrote:

I'm trying to create a multi-project template. On the New Project dialog,
the user would select this template and enter a name in the Name box (as if
they were creating a regular project). My multi-project vstemplate file
contains the following:

VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"
TemplateData
Name>MCIS Web Solution Template</Name
Description>MCIS Standard Web Solution Template</Description
Icon>__TemplateIcon.ico</Icon
ProjectType>VisualBasic</ProjectType
/TemplateData

!-- Template Content --
TemplateContent
ProjectCollection
ProjectTemplateLink ReplaceParameters="true"
ProjectName="Schema">Source\Schema\Schema.vstempla te</ProjectTemplateLink
/ProjectCollection
CustomParameters
CustomParameter Name="$solutionname$"
Value="MCIS.Applications.$safeprojectname$" /
/CustomParameters
/TemplateContent
/VSTemplate

How would I go about passing the $solutionname$ parameter to the Schema
template so the Schema.vbproj file can set the root namespace and assembly
name to MCIS.Applications.<solution name here>.Schema? I'm kinda stuck. In
my Schema.vstemplate file, I can set custom parameters, but I don't know how
to create a custom parameter that has the name of the multi-project solution
as the value of the parameter....the following is my Schema.vstemplate that
does not work:


VSTemplate Version="2.0.0" Type="Project"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"
!-- Template Information --
TemplateData
Name>Schema</Name
Description>MCIS Schema Project Template</Description
Icon>__TemplateIcon.ico</Icon
ProjectType>VisualBasic</ProjectType
CreateNewFolder>true</CreateNewFolder
ProvideDefaultName>true</ProvideDefaultName
DefaultName>Schema</DefaultName
LocationField>Enabled</LocationField
EnableLocationBrowseButton>true</EnableLocationBrowseButton
/TemplateData

!-- Template Contents --
TemplateContent
Project File="Schema.vbproj" ReplaceParameters="true"
TargetFileName="Source\Schema\Schema.vbproj"
Folder Name="classes"
Folder Name="searchcriteria" /
/Folder
Folder Name="datasets" /
Folder Name="My Project"
ProjectItem
ReplaceParameters="true">Application.myapp</ProjectItem
ProjectItem
ReplaceParameters="true">Application.Designer.vb</ProjectItem
ProjectItem
ReplaceParameters="true">AssemblyInfo.vb</ProjectItem
ProjectItem
ReplaceParameters="true">Settings.settings</ProjectItem
ProjectItem
ReplaceParameters="true">Settings.Designer.vb</ProjectItem
/Folder
/Project
CustomParameters
CustomParameter Name="$mcisnamespace$"
Value="$solutionname$.Schema" /
/CustomParameters
/TemplateContent
/VSTemplate

In my Schema.vbproj I have:
Project ..
PropertyGroup
...
RootNamespace>$mcisnamespace$</RootNamespace
...
/PropertyGroup
...
/Project

Thanks,
Mythran

Quote:
On Monday, September 29, 2008 4:13 AM hongye wrote:

Hello Mythran,

Welcome to Microsoft Newsgroup Service. My name is Hongye Sun [MSFT]. It is
my pleasure to work with you on this issue.

Do you mean that you want to pass the project name filled by the user when
creating a new project by multiple project template to its sub-project
template as a parameter? So that the sub-project name can contain the user
input project name. Please correct me if I am wrong.

As far as I know, custom parameters will not inherit from root template to
its sub-project templates. However, some default parameters can be passed
to its sub-project templates.
In root template file, we use <ProjectTemplateLink> element to include
sub-project template. Its attribute "ProjectName" will be considered as
default parameters "$projectname$" and "$safeprojectname$" in sub-project
templates. We could also use parameters to specify the "ProjectName"
attribute no matter we set "ReplaceParameters" attribute or not. (Note that
there is no "ReplaceParameters" attribute in <ProjectTemplateLink> element
schema.)

Now we could do like this:
1. Define a custom parameter named "$solutionname$" with value
"MCIS.Applications.$safeprojectname$".
2. Specify the attribute "ProjectName" as "$solutionname$.Schema" in
ProjectTemlateLink> element.
3. In the Schema.vbproj file, using "$projectname$" or "$safeprojectname$"
to specify its <RootNamespace> element.

Here is the vstemplate files after change:

Root vstemplate file:
-------------------------------------------------------
VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"
TemplateData
Name>MCIS Web Solution Template</Name
Description>MCIS Standard Web Solution Template</Description
Icon>__TemplateIcon.ico</Icon
ProjectType>VisualBasic</ProjectType
/TemplateData

!-- Template Content --
TemplateContent
ProjectCollection
ProjectTemplateLink
ProjectName=""$solutionname$.Schema">Source\Schema \Schema.vstemplate</Projec
tTemplateLink
/ProjectCollection
CustomParameters
CustomParameter Name="$solutionname$"
Value="MCIS.Applications.$safeprojectname$" /
/CustomParameters
/TemplateContent
/VSTemplate
-------------------------------------------------------

Schema.vstemplate
-------------------------------------------------------
VSTemplate Version="2.0.0" Type="Project"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"
!-- Template Information --
TemplateData
Name>Schema</Name
Description>MCIS Schema Project Template</Description
Icon>__TemplateIcon.ico</Icon
ProjectType>VisualBasic</ProjectType
CreateNewFolder>true</CreateNewFolder
ProvideDefaultName>true</ProvideDefaultName
DefaultName>Schema</DefaultName
LocationField>Enabled</LocationField
EnableLocationBrowseButton>true</EnableLocationBrowseButton
/TemplateData

!-- Template Contents --
TemplateContent
Project File="Schema.vbproj" ReplaceParameters="true"
TargetFileName="Source\Schema\Schema.vbproj"
Folder Name="classes"
Folder Name="searchcriteria" /
/Folder
Folder Name="datasets" /
Folder Name="My Project"
ProjectItem
ReplaceParameters="true">Application.myapp</ProjectItem
ProjectItem
ReplaceParameters="true">Application.Designer.vb</ProjectItem
ProjectItem
ReplaceParameters="true">AssemblyInfo.vb</ProjectItem
ProjectItem
ReplaceParameters="true">Settings.settings</ProjectItem
ProjectItem
ReplaceParameters="true">Settings.Designer.vb</ProjectItem
/Folder
/Project
/TemplateContent
/VSTemplate
-------------------------------------------------------

Schema.vbproj
-------------------------------------------------------
Project ..
PropertyGroup
...
RootNamespace>$safeprojectname$</RootNamespace
...
/PropertyGroup
...
/Project

-------------------------------------------------------

Please try the solution above and let me know if you have any question on
it. Thanks.

Regards,
Hongye Sun (hongyes (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
msdnmg (AT) microsoft (DOT) com.

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://support.microsoft.com/select/default.aspx?target=assistance&ln=en-us.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.

Quote:
On Monday, September 29, 2008 4:22 AM hongye wrote:

Hi Mythran,

Thank you for posting here!

I notice that you have posted the same question in our
microsoft.public.vstudio.extensibility newsgroup, which I have already
responded. So please check my answer there and if you need any further
assistance on this particular issue, please reply to me in that thread so
that I can follow up with you in time.

Please go to
http://www.microsoft.com/communities/newsgroups/en-us/?dg=microsoft.public.v
studio.extensibility&mid=bb27115d-2a8b-4131-bb3e-1c74b3b13688 to view my
reply.

For your convenience, I have included my reply as following:

---------------------
Do you mean that you want to pass the project name filled by the user when
creating a new project by multiple project template to its sub-project
template as a parameter? So that the sub-project name can contain the user
input project name. Please correct me if I am wrong.

As far as I know, custom parameters will not inherit from root template to
its sub-project templates. However, some default parameters can be passed
to its sub-project templates.
In root template file, we use <ProjectTemplateLink> element to include
sub-project template. Its attribute "ProjectName" will be considered as
default parameters "$projectname$" and "$safeprojectname$" in sub-project
templates. We could also use parameters to specify the "ProjectName"
attribute no matter we set "ReplaceParameters" attribute or not. (Note that
there is no "ReplaceParameters" attribute in <ProjectTemplateLink> element
schema.)

Now we could do like this:
1. Define a custom parameter named "$solutionname$" with value
"MCIS.Applications.$safeprojectname$".
2. Specify the attribute "ProjectName" as "$solutionname$.Schema" in
ProjectTemlateLink> element.
3. In the Schema.vbproj file, using "$projectname$" or "$safeprojectname$"
to specify its <RootNamespace> element.

Here is the vstemplate files after change:

Root vstemplate file:
-------------------------------------------------------
VSTemplate Version="2.0.0" Type="ProjectGroup"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"
TemplateData
Name>MCIS Web Solution Template</Name
Description>MCIS Standard Web Solution Template</Description
Icon>__TemplateIcon.ico</Icon
ProjectType>VisualBasic</ProjectType
/TemplateData

!-- Template Content --
TemplateContent
ProjectCollection
ProjectTemplateLink
ProjectName=""$solutionname$.Schema">Source\Schema \Schema.vstemplate</Projec
tTemplateLink
/ProjectCollection
CustomParameters
CustomParameter Name="$solutionname$"
Value="MCIS.Applications.$safeprojectname$" /
/CustomParameters
/TemplateContent
/VSTemplate
-------------------------------------------------------

Schema.vstemplate
-------------------------------------------------------
VSTemplate Version="2.0.0" Type="Project"
xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"
!-- Template Information --
TemplateData
Name>Schema</Name
Description>MCIS Schema Project Template</Description
Icon>__TemplateIcon.ico</Icon
ProjectType>VisualBasic</ProjectType
CreateNewFolder>true</CreateNewFolder
ProvideDefaultName>true</ProvideDefaultName
DefaultName>Schema</DefaultName
LocationField>Enabled</LocationField
EnableLocationBrowseButton>true</EnableLocationBrowseButton
/TemplateData

!-- Template Contents --
TemplateContent
Project File="Schema.vbproj" ReplaceParameters="true"
TargetFileName="Source\Schema\Schema.vbproj"
Folder Name="classes"
Folder Name="searchcriteria" /
/Folder
Folder Name="datasets" /
Folder Name="My Project"
ProjectItem
ReplaceParameters="true">Application.myapp</ProjectItem
ProjectItem
ReplaceParameters="true">Application.Designer.vb</ProjectItem
ProjectItem
ReplaceParameters="true">AssemblyInfo.vb</ProjectItem
ProjectItem
ReplaceParameters="true">Settings.settings</ProjectItem
ProjectItem
ReplaceParameters="true">Settings.Designer.vb</ProjectItem
/Folder
/Project
/TemplateContent
/VSTemplate
-------------------------------------------------------

Schema.vbproj
-------------------------------------------------------
Project ..
PropertyGroup
...
RootNamespace>$safeprojectname$</RootNamespace
...
/PropertyGroup
...
/Project

-------------------------------------------------------

---------------------

Thank you and have a nice day!

Regards,
Hongye Sun (hongyes (AT) online (DOT) microsoft.com, remove 'online.')
Microsoft Online Community Support

Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
msdnmg (AT) microsoft (DOT) com.

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://support.microsoft.com/select/default.aspx?target=assistance&ln=en-us.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.

Quote:
On Wednesday, October 01, 2008 12:32 PM Mythran wrote:

I went ahead and wrote a wizard so now the templates (when using the wizard)
inherit custom parameters (so a multi-project template can set parameters
and the project templates receive these custom parameters as part of their
custom parameters and the project items also see these parameters in their
custom parameter list). The problem I'm confronted with now is changing the
default project location....

When creating a solution from multi-project template, there is no way to
change the solution's name nor specify where the projects from the
multi-project location are to be placed. They have a tendancy to be placed
1 folder deeper than where the solution file is stored and the parent
folder's name is always the name of the solution; so for a multi-project
template when the user enters a Project name of Solution1 the following
structure is the folder structure automatically generated:

C:\SolutionFolder\Solution1.sln
C:\SolutionFolder\Solution1\Project1\Project1.vbpr oj
C:\SolutionFolder\Solution1\Project2\Project2.vbpr oj
C:\SolutionFolder\Solution1\Project3\Project3.vbpr oj

Using only templates if I can, otherwise through the class I wrote that
implements the IWizard interface, I would like to be able to change the
solution's name and the project directories location prior to the projects
being added to the solution....so the generated structure is:

C:\SolutionFolder\MCIS.Applications.Solution1.sln
C:\SolutionFolder\Source\Project1\Project1.vbproj
C:\SolutionFolder\Source\Project2\Project2.vbproj
C:\SolutionFolder\Source\Project3\Project3.vbproj

This is the recommended structure for Team Foundation Server projects yet
the default project settings don't really allow you to create the solutions
and projects in this manner. You have to manually move the created solution
project, rename it, move each project folder, and then edit the solution in
a text editor to point to the project files in the new location. This is
kinda strange since the recommended practices from Microsoft defy the
ability of the new solution/project wizards.

Thanks,
Mythran

Quote:
On Wednesday, October 08, 2008 5:46 AM stchen wrote:

Hi Mythran,

As Hongye has been OOF this two days, I'll help him to assist you on this
issue. For the issue, Hongye has been discussing on it with me and I've got
that you've currently got some progress via creating a custom project
wizard which internally call some built-in wizard interface. And there is
one path(which indicate the place VS IDE extract the project template zip
package) parameter you can quite get in your custom wizard, correct?

As for this zip extracting cache location, we have performed some research
and consulted some other engineers, I'm afraid this parameter is somewhat
hidden by the VS IDE and is also undocumented by the product. In order to
make the approach work, so far Hongye and I have thought about one
potential workaround, that is use a custom path for that parameter(instead
of the build-in location the visual studio extract the template zip).
Therefore, we need to extract the template zip file into a custom location
in our own code and supply that location to the wizard interface. How do
you think of this?

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
msdnmg (AT) microsoft (DOT) com.

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.

--------------------
xOTvWtgIJHA.6004 (AT) TK2MSFTNGHUB02 (DOT) phx.gbl

wizard)
the
placed

Quote:
On Monday, October 20, 2008 6:37 AM Bob Ega wrote:

Parameters can be passed among sub projects using a wizard. Here's how I do it:

You have several projects in the zip file for that template. Each has its
own vstemplate file in addition to the master vstemplate.

1. Write a wizard (class library that implements IWizard). Here's the trick:
ALL VARIABLES THAT YOU WANT TO PASS AMONG PROJECTS MUST BE STATIC:

private static string namespace;

2. Add a form to accept input from the user.
3. Only show the form for the multi-project template:

public void RunStarted(object automationObject,
Dictionary<string, string> replacementsDictionary,
WizardRunKind runKind, object[] customParams)
{
if (runKind == WizardRunKind.AsMultiProject)
{
//show your form and handle the user input
}
}

4. Build the wizard with a strongly named key, and add to your GAC
5. Edit ALL vstemplate files to include the WizardExtension tag pointing to
your wizard.

That's all you need to do.

Hope this helps you.

Quote:
On Friday, October 31, 2008 11:26 AM Mythran wrote:

"Bob Egan" <Bob Egan (AT) discussions (DOT) microsoft.com> wrote in message
news:E0D237ED-83EE-49AA-9E6E-DE227F776BE4 (AT) microsoft (DOT) com...

This is what I ended up doing. Sorry it took me so long to reply (and the
original message may or may not still be on the server)...there were quite a
few issues with templates in Visual Studio 2008 that I had to use
workarounds for (modifying the sub-directory the projects get placed into
... had to implement IDTWizard and use VSZ files for the projects so I had a
Wizard and template wizard for the projects).

Thanks

Mythran

Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.