2011-05-25 49 views
0

我已經成功地使用VS2010 SDK和TemplateWizard爲我們的Silverlight解決方案創建了多項目模板。我的問題是如何自動鏈接Silverlight項目與Web項目?我有兩個模板:一個用於主機Web項目,另一個用於SL項目。問題是,我無法獲得Silverlight項目GUID,以便將其設置在Web項目文件中包含的SilverlightApplicationList標記中。我已經嘗試通過TemplateWizard設置Silverlight項目GUID,但在創建Silverlight項目時始終會重新生成GUID。Silverlight多項目模板。我如何自動將Silverlight項目與Web項目鏈接?

回答

0

我發現了一個解決方案,通過.NET Reflector運行Microsoft.VisualStudio.ServiceModel.DomainServices.Tools.dll。我想現有的Silverlight模板必須使用一些機制將SL項目鏈接到Web項目。我已經添加下面的代碼在我的IWizard實現我的RunFinished方法由根項目模板名爲:

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); 
    } 
} 

此代碼的工作一種享受。