Я нашел решение этой проблемы, запустив Microsoft.VisualStudio.ServiceModel.DomainServices.Tools.dll через .NET Reflector. Я полагал, что существующие шаблоны Silverlight должны использовать какой-то механизм для связи проекта SL с веб-проектом. Я добавил следующий код в мой метод RunFinished в моей реализации IWizard, который вызывается шаблоном корневого проекта:
public void RunFinished()
{
IVsHierarchy hierarchy;
IVsHierarchy hierarchy2;
Project webProject = this.GetProject(this._webProjectName);
Project slProject = this.GetProject(this._slProjectName);
EnvDTE.Properties properties = webProject.Properties;
ProjectItem aspxTestPage = this.GetAspxTestPage(webProject);
if (aspxTestPage != null)
{
properties.Item("WebApplication.StartPageUrl").Value = aspxTestPage.Name;
properties.Item("WebApplication.DebugStartAction").Value = 1;
}
IServiceProvider sp = this._dte2 as IServiceProvider;
IVsSolution service = null;
using (ServiceProvider provider2 = new ServiceProvider(sp))
{
service = provider2.GetService(typeof(IVsSolution)) as IVsSolution;
}
if (((service.GetProjectOfUniqueName(webProject.UniqueName, out hierarchy) == 0) && (hierarchy != null)) && (service.GetProjectOfUniqueName(slProject.UniqueName, out hierarchy2) == 0))
{
(hierarchy as IVsSilverlightProjectConsumer).LinkToSilverlightProject("ClientBin", true, false, hierarchy2 as IVsSilverlightProject);
}
}
Этот код работает удовольствие.