Многопроектный шаблон Silverlight. Как я могу автоматически связать проект Silverlight с веб-проектом? - PullRequest
0 голосов
/ 25 мая 2011

Мне удалось создать многопроектный шаблон для наших решений Silverlight с помощью VS2010 SDK и TemplateWizard. У меня вопрос, как я могу автоматически связать проект Silverlight с веб-проектом? У меня есть два шаблона: один для веб-проекта хоста и один для проекта SL. Проблема в том, что я не могу получить GUID проекта Silverlight, чтобы установить его в теге SilverlightApplicationList, который содержится в файле веб-проекта. Я попытался установить GUID проекта Silverlight с помощью TemplateWizard, но GUID всегда восстанавливается при создании проекта Silverlight.

1 Ответ

0 голосов
/ 25 мая 2011

Я нашел решение этой проблемы, запустив 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);
    }
}

Этот код работает удовольствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...