2012-12-29 10 views
5

フルバージョンの.Net(4.0または3.5)が必要なExcelDNAプラグインをビルドしています(私はSystem.Webの一部を使用しています)。このため、クライアントバージョンのみを持つユーザーはエラーになります。.netのフルバージョンがインストールされていることを確認しますか?

クライアントバージョンのみがインストールされている場合は、起動時に「最新のバージョンを取得する」ポップアップを表示するのが好きです。

フルバージョンがインストールされているかどうかを簡単に確認する方法はありますか?グーグルでは多くのレジストリをチェックすることをお勧めしているようですが、これは多くの.NETバージョンが存在するため、エラーが発生しやすくなります。私が構築するためにチェックする必要がありますどのような経路をそのような場合には:

bool IsFullDotNetVersion() 
{ 

} 

はフルバージョンでのみ利用可能です機能の有無を確認することが可能/良いでしょうか?私。 System.Webが環境内に存在することを確認することは可能ですか? (クライアント版の.Netの権利には含まれていません)

質問:私のシステムに異なる.netバージョンをインストールしてアプリケーションを簡単にテストするにはどうしたらいいですか? .Netスイッチャーはありますか?

+0

レジストリ設定を読み取る必要があります。 [this](http://stackoverflow.com/a/199783/649524)優秀な回答 – Tilak

+0

私は何が.netバージョンがインストールされているか尋ねていません。私はフルバージョンがインストールされているかどうかを尋ねています。その投稿は、私がそれを判断するためにチェックする必要がある正確なレジストリキーには答えません。 –

+0

.NETフルプロファイルレジストリ設定 – Tilak

答えて

2

System.Web(または必要なアセンブリ)が存在するかどうかをGACで確認します。

ここにはworks on my machineというコードがあります。

private static const string BasePath = @"c:\windows\assembly"; 

public static bool HasDotNetFullversion() 
{ 
    var gacFolders = new List<string>() 
    { 
     "GAC", "GAC_32", "GAC_64", "GAC_MSIL", 
     "NativeImages_v2.0.50727_32", "NativeImages_v2.0.50727_64" 
    }; 

    var assemblyFolders = from gacFolder in gacFolders 
          let path = Path.Combine(BasePath, gacFolder) 
          where Directory.Exists(path) 
          from directory in Directory.GetDirectories(path) 
          select directory; 

    var hasSystemWeb = assemblyFolders.Any(x => 
     x.EndsWith("system.web", StringComparison.InvariantCultureIgnoreCase)); 
} 
1

可能な重複。 How to detect what .NET Framework versions and service packs are installed?短い答えはあなたがレジストリを読む必要があることです

+0

はい、どんなレジストリキーですか? .net 4.0については明らかですが、.net 3.5については? –

+0

上記のコメントのリンクをクリックすると、参照先の表を参照してください。一般的に、インストーラはフレームワークチェックの問題を処理します。また、アンインストールの問題も処理します。 –

+0

@NielsBosma:フレームワークのクライアントプロファイルバージョンは、4.0で初めて利用可能になりました。 http://msdn.microsoft.com/en-us/library/bb822049.aspxおよびhttp://msdn.microsoft.com/en-us/library/hh925568.aspxと同様に、以下を検討することもできます。リンクマイクが提供されます。 – NotMe

0

クライアントコンピュータが持っている.netバージョンを試してみるのではなく、完全な.netインストーラをインストールプログラムにバンドルすることをお勧めします。

つまり、インストール時に検出し、適切な処置を講じてください。これは、潜在的に失われているフレームワークの部分を処理する通常の方法です。

+1

Excelのプラグインなので、インストーラは提供していません。プラグインを使いたいときはドラッグ&ドロップです。 –

関連する問題