在VS扩展中调用文本转换

时间:2012-04-04 14:22:30

标签: visual-studio templates t4 template-engine t4-toolbox

我想创建一个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

2 个答案:

答案 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如下:

  1. Microsoft.VisualStudio.OLE.Interop,vesrion:7.1.40304.0,RunTime Version:v1.1.4322

  2. Microsoft.VisualStudio.Shell,Version:10.0.0.0,RunTime Version:v4.0.30319,

  3. microsoft.visualstudio.shell.interop.8.0,Version:8.0.0.0,RuntimeVersion:v1.1.4322

  4. Microsoft.VisualStudio.TemplateWizardInterface,Version:8.0.0.0,Runtime Version:v2.0.50727

  5. Microsoft.VisualStudio.TextTemplating,Version:9.0.0.0,Runtime Version:v2.0.50727

  6. Microsoft.VisualStudio.TextTemplating.Interfaces.10.0, 版本:10.0.0.0, RunTime版本:v4.0.30319

  7. Microsoft.VisualStudio.TextTemplating.VSHost.10.0, 版本:10.0.0.0, RunTime版本:v4.0.30319

  8. 请建议......