0

ソリューションにアイテムを追加しながら T4 テンプレートを実行することにより、ソリューションにアイテム (カスタム .aspx ページなど) を生成する Visual Studio アイテム テンプレートを作成したいと考えています。このために、私はこのリンクを使用しています: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がnullのままであるため、引数のnull例外エラーが発生します。なぜヌルなのですか?自分のやり方が正しいのか間違っているのかわかりません。先に進むことができるように、上記のリンクのコードで指定されたサービスプロバイダーを実装する方法を提案してください。可能であれば、コード例を教えてください。

提案してください、

ありがとう、マユル

4

2 に答える 2

0

Visual Studio 2010 で GetGlobalService を使用して STextTemplating を直接クエリできるはずです。

于 2012-04-04T18:52:22.470 に答える
0

このプロジェクトで使用したさまざまなアセンブリ バージョンが原因でしょうか。私が開発しているアプリケーションは VS2010 で、バージョン 10.0.0 のアセンブリを使用しようとしましたが、RunTime バージョンは 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、ランタイム バージョン: 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 に答える