0

我想创建一个 Visual Studio 项目模板,通过在将其添加到解决方案时执行 T4 模板在解决方案中生成项目(例如自定义 .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);

但它给了我一个争论空异常错误,因为变量 dte 仍然为空。为什么它是空的?我不知道我这样做是对还是错。请建议我如何实现上面链接中代码中给出的 serviceprovider 以便我可以继续前进。如果可能,请给我一个代码示例。

请建议,

谢谢,马尤尔

4

2 回答 2

0

您应该能够在 Visual Studio 2010 中使用 GetGlobalService 直接查询 STextTemplating。

于 2012-04-04T18:52:22.470 回答
0

可能是因为我在这个项目中使用了不同的程序集版本。我正在开发的应用程序在 VS2010 中,我尝试使用版本为 10.0.0 且运行时版本为 4.0 的程序集。但是在版本 10.0.0.0 和运行时版本为 v4.0 时我找不到几个 dll。这是让我烦恼的事情吗?我尝试添加具有所需版本的新 dll,但我没有 10.0 版的这些 dll,而且我在网上的任何地方都没有得到它。如果这就是原因,那么请让我知道我将在哪里获得这些 dll ......?我使用的dll如下:

  1. Microsoft.VisualStudio.OLE.Interop,版本:7.1.40304.0,运行时版本:v1.1.4322

  2. Microsoft.VisualStudio.Shell,版本:10.0.0.0,运行时版本:v4.0.30319,

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

  4. Microsoft.VisualStudio.TemplateWizardInterface,版本:8.0.0.0,运行时版本:v2.0.50727

  5. Microsoft.VisualStudio.TextTemplating,版本:9.0.0.0,运行时版本:v2.0.50727

  6. Microsoft.VisualStudio.TextTemplating.Interfaces.10.0,版本:10.0.0.0,运行时版本:v4.0.30319

  7. Microsoft.VisualStudio.TextTemplating.VSHost.10.0,版本:10.0.0.0,运行时版本:v4.0.30319

请建议...

于 2012-04-06T13:17:25.947 回答