我想创建一个Visual Studio项模板,通过在将T4模板添加到解决方案时执行T4模板,在解决方案中生成一个Item(例如,自定义.aspx页面)。为此我使用此链接:http://msdn.microsoft.com/en-us/library/gg586947.aspx 任何人都可以告诉我如何获得服务提供商,这在上面链接的代码中提到。为了解决这个问题,我写道:
EnvDTE.DTE dte =(EnvDTE.DTE)Package.GetGlobalService(typeof(EnvDTE.DTE)); //获取服务提供商 - 如何执行此操作取决于上下文:
IServiceProvider serviceProvider = new Microsoft.VisualStudio.Shell.ServiceProvider(dte as Microsoft.VisualStudio.OLE.Interop.IServiceProvider);
但是它给了我一个争论null异常错误,因为变量dte保持为null。为什么它为空?我不知道我是做对还是错。请建议如何实现上面链接代码中给出的serviceprovider,以便我可以继续前进。如果可能的话,请提供一个代码示例。
请建议,
谢谢, MAYUR
答案 0 :(得分:0)
您应该能够在Visual Studio 2010中使用GetGlobalService直接查询STextTemplating。
答案 1 :(得分:0)
是否可能是由于我在此项目中使用的不同装配版本。我正在开发的应用程序是在VS2010中,我尝试使用版本10.0.0和RunTime版本为4.0的程序集。但是在版本10.0.0.0和RunTime Version为v4.0时,我找不到几个dll。这是让我讨厌的事吗?我尝试添加所需版本的新dll,但我没有10.0版本的这些dll,而且我没有在网上的任何地方得到它。如果这就是原因那么请告诉我在哪里可以得到那些dll ......?我使用的dll如下:
Microsoft.VisualStudio.OLE.Interop,vesrion:7.1.40304.0,RunTime Version:v1.1.4322
Microsoft.VisualStudio.Shell,Version:10.0.0.0,RunTime Version:v4.0.30319,
microsoft.visualstudio.shell.interop.8.0,Version:8.0.0.0,RuntimeVersion:v1.1.4322
Microsoft.VisualStudio.TemplateWizardInterface,Version:8.0.0.0,Runtime Version:v2.0.50727
Microsoft.VisualStudio.TextTemplating,Version:9.0.0.0,Runtime Version:v2.0.50727
Microsoft.VisualStudio.TextTemplating.Interfaces.10.0, 版本:10.0.0.0, RunTime版本:v4.0.30319
Microsoft.VisualStudio.TextTemplating.VSHost.10.0, 版本:10.0.0.0, RunTime版本:v4.0.30319
请建议......