none
.slnの既定のプログラムをVisual Studio 2008にしたい。 RRS feed

  • 質問

  • お世話になります。

    やりたいことは、.slnの既定のプログラムをVisual Studio6.0からVisual Studio2008に変更したい、ということです。

    Visual Studio6.0がインストールされている状態で、Visual Studio 2008をインストールしたところ、.slnファイルがVisual Studio6.0に関連づけられました。既定のプログラムを変更しようと、Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exeを選択しましたが、元の6.0のままです。

    選択するファイルが間違っているのか、やり方が違うのか不明です。どうぞご教授いただけますよう、お願いいたします。

    2014年10月9日 4:07

回答

  • Visual Studio 6.0が扱う拡張子は .dsw(ワークスペース)もしくは.dsp(プロジェクト)になります。拡張子.slnはVisual Studio 6.0の次のバージョンVisual Studio .net 2002で導入されたものですから

    .sln は 6.0 当時から、配布系のソリューションにて使われていました。
    代表的なのは、Visual Studio Installer 1.1 のプロジェクトですね。

    (本題からは外れますが、当時は .dsw や .dsp だけでなく、.dbp などの形態もありましたね)

    ただ、何故 Visual Studio 6.0 側に関連付けされた状態になってしまっているのかは私には分かりません。
    VS2008 の後で VS6 を入れてしまったのであれば、そのような事態になってしまうこともありそうですが…今回はそういうわけではなさそうですし。

    選択するファイルが間違っているのか、やり方が違うのか不明です。

    本来であれば、.sln はVisual Studio 本体に直接関連付けられるのではなく、バージョンセレクタであるVSLauncher.exeで中継されるようになっています(C:\Program Files\Common Files\Microsoft Shared\MSEnv\にあります)。これは、.sln ファイルの中に書かれているバージョン情報を読み取って、Visual Studio の切替を行うための仕掛けです。ファイルの内容によって、アイコン表示も変えるためのシェルエクス手ションも仕掛けられていますね。

    もしもバージョンセレクタを経由させる必要が無く、直接本体に関連付けたいのであれば、*.sln を右クリックして、[プログラムから開く] -> [既定のプログラムを選択]で変更できそうですが……現状はそれでも駄目だったのですよね。

    いずれかの開発ツールで、「管理者として実行」を有効にしていたりはしますか? これが設定されている場合、VSLauncher 経由の起動がうまくいかないことがあるようです。

    2014年10月9日 8:16
  • .slnファイルは、Visual Studio 6.0のVisual InterDevで使用されます。ちなみにプロジェクトファイルの拡張子は.vipです。

    (参考)
    Visual InterDev
    http://msdn.microsoft.com/en-us/library/aa233149(v=vs.60).aspx

    さて、質問者さんの環境がわからないのですが、普通に以下のようにして拡張子の関連付けを変更してもダメだったのでしょうか?

    Windows 7でアプリケーションと拡張子の関連付けを変更する方法
    http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=012111


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク KimJun 2014年10月16日 7:23
    2014年10月9日 8:25
    モデレータ
  • インストール順に関して、syghさんのおっしゃる通りですが、もう少し話を続けてみます。

    .NET系のVisual Studioに関しては、必ず古い順にインストールする必要があります。合わせて、SQL Serverの開発環境もインストールするのであれば、それも合わせて古い順にインストールする必要があります(※1)。かつて、古い順にインストールせずにトラぶった例はよくありました。
    ただ、Visual Studio 6.0は.NET系のVisual Studioとは根本的に違いますので、私ははっきりとは言い切れませんが、経験上、これらのインストール順によるトラブルはないように思えます。本来なら私もVisual Studio 6.0から古い順にインストールすることを薦めるのですが、質問者さんがその順でトラぶっていますので、逆のインストールも試されてみると良いかもしれないと思いました。
    しかし、今回の問題は関連付けだけの問題のようですので、先にVisual Studio 6.0をインストールして、Visual Studio 2008で関連付けが変わらなかったとしても、手動で関連付けだけを変更する方がベストだと思います。このことを先に提案すれば良かったですね。気付かずにすみません。
    ちなみに、KimJunさんが開発されている環境はさすがにWindows Xpではないと思いますが、Visual Studio 6.0は公式にはWindows Xpより後のOSには非対応になっています。しかし、経験上、Windows 7でも今のところ問題なく動作しています。ただ、サービスパックは最新のものを当てるようにして下さい。

    開発ツール対応 OS 一覧
    http://www.microsoft.com/ja-jp/dev/support/tools.aspx

    いずれにしてもVisual Studio 6.0はWindows Xpより後のOSには非対応であり、よって、マイクロソフトからの正式な情報はないわけですから、Windows Xpより後のOSで使う場合は、経験上で語ることしかできません。Visual Stdio 6.0から古い順に.NETのVisual Studioをインストールして関連付けに問題が発生しなかった経験が私はありますが、それはWindows Xpの時でした。そのWindows Xpが使えなくなって、Windows 7に.NET系のVisual Studio 6.0をインストールしましたが、関連付けの問題は発生しませんでした。これが先に述べた私の経験ですが、このような経験を提供するぐらいのことしかできません。あくまで私の環境下における経験上の話ですので、必ずそうなるとは限らず、参考程度にして下さいという私の本音をここで述べておきます。

    ※1 マイクロソフト社が正式に推薦しています。

    Installing Visual Studio Versions Side-by-Side
    http://msdn.microsoft.com/en-us/library/ms246609(v=vs.90).aspx

    Note: 

    In general, you should install the earliest release of Visual Studio first, and then install subsequent versions of Visual Studio in the order in which they were released. For example, Visual Studio .NET 2002 should be installed before Visual Studio 2005, and Visual Studio 2005 should be installed before Visual Studio 2008.

    ただ、Visual Studio 6.0を含めたインストール順に関しては見つけられていません。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク KimJun 2014年10月16日 7:24
    2014年10月13日 7:02
    モデレータ
  • .slnファイルにdevenv.exeを直接関連付けようとするのではなく、[Visual Studio Version Selector]を関連付けるべきではないでしょうか(新旧で実行プログラムファイル名のベース部分が同じなので、変更しようとしてもWindows側が同じアプリだと判断している可能性があります)。もしアプリケーションリストに[Visual Studio Version Selector]が表示されないのであれば、他の方が言及されているように VSLauncher.exe を関連付けます。

    ちなみに新しいバージョンの開発環境(やSDK)をインストールした後で、古いバージョンの開発環境(やSDK)をインストールするというのは、私はおすすめしません。たとえばVS 2008をインストールした後でVS 2005をインストールしておかしなことになった例を何度か見かけたことがあります。マイクロソフトは旧→新のインストール順序はテストしているはずですが、新→旧の順序はテストしていないと思われます。

    なお、かつてVS 6.0→VS 2005→VS 2008→VS 2010の順序で同一PCにインストールしたことがありますが、.slnファイルの関連付けが狂うようなことはありませんでした。

    • 編集済み sygh 2014年10月12日 11:43
    • 回答としてマーク KimJun 2014年10月16日 7:24
    2014年10月12日 11:38

すべての返信

  • どちらも持っていないので、憶測になりますが、コンバートする必要があるのでは無いでしょうか?

    おそらく.sinをVisual Studio2008で開くとコンバートする旨のメッセージが出るのでは無いかと思います。

    そこでコンバートされたファイルはVisual Studio2008で開けるようになると思います。

    2014年10月9日 7:08
  • 早速ご回答いただきありがとうございます。

    言葉足らずですみません。質問させていただいた.slnと各プロジェクトは、元々Visual Studio 2008で作成されていた物です。それをVisual Studio 2008で開こうとしたところ、Visual Studio 6.0で開こうとして、エラーになっています。

    先にVisual Studio 2008を起動しておいて、そこから開く分には問題ないのですが。

    2014年10月9日 7:20
  • Visual Studio 6.0が扱う拡張子は .dsw(ワークスペース)もしくは.dsp(プロジェクト)になります。拡張子.slnはVisual Studio 6.0の次のバージョンVisual Studio .net 2002で導入されたものですから「.slnファイルがVisual Studio6.0に関連づけられ」という状態自体が不可解です。

    とは言え、Visual Studio 2008の関連付け設定を元に戻したいのであれば[ツール]-[オプション]ダイアログから「ファイルの関連付けを復元」を実行されてみてはどうでしょうか?

    2014年10月9日 7:29
  • Visual Studio 6.0が扱う拡張子は .dsw(ワークスペース)もしくは.dsp(プロジェクト)になります。拡張子.slnはVisual Studio 6.0の次のバージョンVisual Studio .net 2002で導入されたものですから

    .sln は 6.0 当時から、配布系のソリューションにて使われていました。
    代表的なのは、Visual Studio Installer 1.1 のプロジェクトですね。

    (本題からは外れますが、当時は .dsw や .dsp だけでなく、.dbp などの形態もありましたね)

    ただ、何故 Visual Studio 6.0 側に関連付けされた状態になってしまっているのかは私には分かりません。
    VS2008 の後で VS6 を入れてしまったのであれば、そのような事態になってしまうこともありそうですが…今回はそういうわけではなさそうですし。

    選択するファイルが間違っているのか、やり方が違うのか不明です。

    本来であれば、.sln はVisual Studio 本体に直接関連付けられるのではなく、バージョンセレクタであるVSLauncher.exeで中継されるようになっています(C:\Program Files\Common Files\Microsoft Shared\MSEnv\にあります)。これは、.sln ファイルの中に書かれているバージョン情報を読み取って、Visual Studio の切替を行うための仕掛けです。ファイルの内容によって、アイコン表示も変えるためのシェルエクス手ションも仕掛けられていますね。

    もしもバージョンセレクタを経由させる必要が無く、直接本体に関連付けたいのであれば、*.sln を右クリックして、[プログラムから開く] -> [既定のプログラムを選択]で変更できそうですが……現状はそれでも駄目だったのですよね。

    いずれかの開発ツールで、「管理者として実行」を有効にしていたりはしますか? これが設定されている場合、VSLauncher 経由の起動がうまくいかないことがあるようです。

    2014年10月9日 8:16
  • .slnファイルは、Visual Studio 6.0のVisual InterDevで使用されます。ちなみにプロジェクトファイルの拡張子は.vipです。

    (参考)
    Visual InterDev
    http://msdn.microsoft.com/en-us/library/aa233149(v=vs.60).aspx

    さて、質問者さんの環境がわからないのですが、普通に以下のようにして拡張子の関連付けを変更してもダメだったのでしょうか?

    Windows 7でアプリケーションと拡張子の関連付けを変更する方法
    http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=012111


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク KimJun 2014年10月16日 7:23
    2014年10月9日 8:25
    モデレータ
  • 魔界の仮面弁士さん、trapemiyaさん、指摘ありがとうございます。.slnはVS6.0でも使われていることには使われているんですね。知りませんでした。

    いずれにしてもVisual Studio 2008側で関連付けを復元させればバージョンセレクターが復活し、ファイルコンテンツに応じて切り替わってくれるとは思っています。

    2014年10月9日 9:19
  • 質問者です。

    みなさま、お忙しい中、ご回答をいただき、ありがとうございます。

    佐祐理さん:

    「関連付けを復元」、を実行しましたが、状況は変わらず、VS6.0から起動する状態です。

    魔界の仮面弁士さん:

    .slnで既定のプログラムを変更しようとVisual Studio 9.0のdevenv.exeを選択した後、このdevenv.exeが「VisualStudio2008」として既定のプログラムの候補に追加されることを期待しているのですが、VisualStudio2008は追加されずに、元々あった(VisualStudio6.0の)DevEnvに関連づけられたままで変化がありません。

    trapemiyaさん:

    教えていただいたサイトの方法でやってみたのですが、なかなかうまくいきません。

    結論としては、今はVS6.0も2008も使っている状態ですので、いずれ折を見てどちらか片方、あるいは両方アンインストール、再インストールして変化を見たいと思います。ユーザのお役に立てるような情報がありましたら、また報告させていただきたく存じます。

    何かヒントがありましたら、また教えていただきたくお願いいたします。

    2014年10月10日 0:35
  • 私の場合は、Visual Studio 2008 ~ Visual Studio 2013まで入っているWindows 7のコンピューターでVisual Studio 6.0(Visual InterDev)を使う必要が出たためにインストールしましたが、KimJunさんのようなことは起こりませんでした。よって、一番最後にVisual Studio 6.0をインストールすると良いかもしれません。
    ところで、slnをダブルクリックして起動することは私はほとんどなく、Visual Studioからソリューションを開くため、どのアプリケーションに関連付いても特に問題ないのですが、そのような運用は難しいのでしょうか? また、例えばWindows 7の場合ですと、私はジャンプリストの「いつも表示」に開発中のソリューションを登録し、そこから起動することも多いです。

    (参考)
    Windows 7でジャンプ リストに特定のファイルを常時表示する方法
    http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=010697


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年10月10日 0:57
    モデレータ
  • tapemiyaさん:

    回答ありがとうございます。そうですね、VB6.0を最後にインストールする、など教えていただいた方法で試してみます。ついつい習慣で、何でもかんでもドキュメントのダブルクリック→アプリを起動とやっていますので、違うアプローチで良い方法があるかもしれません。

    2014年10月10日 4:22
  • .slnファイルにdevenv.exeを直接関連付けようとするのではなく、[Visual Studio Version Selector]を関連付けるべきではないでしょうか(新旧で実行プログラムファイル名のベース部分が同じなので、変更しようとしてもWindows側が同じアプリだと判断している可能性があります)。もしアプリケーションリストに[Visual Studio Version Selector]が表示されないのであれば、他の方が言及されているように VSLauncher.exe を関連付けます。

    ちなみに新しいバージョンの開発環境(やSDK)をインストールした後で、古いバージョンの開発環境(やSDK)をインストールするというのは、私はおすすめしません。たとえばVS 2008をインストールした後でVS 2005をインストールしておかしなことになった例を何度か見かけたことがあります。マイクロソフトは旧→新のインストール順序はテストしているはずですが、新→旧の順序はテストしていないと思われます。

    なお、かつてVS 6.0→VS 2005→VS 2008→VS 2010の順序で同一PCにインストールしたことがありますが、.slnファイルの関連付けが狂うようなことはありませんでした。

    • 編集済み sygh 2014年10月12日 11:43
    • 回答としてマーク KimJun 2014年10月16日 7:24
    2014年10月12日 11:38
  • インストール順に関して、syghさんのおっしゃる通りですが、もう少し話を続けてみます。

    .NET系のVisual Studioに関しては、必ず古い順にインストールする必要があります。合わせて、SQL Serverの開発環境もインストールするのであれば、それも合わせて古い順にインストールする必要があります(※1)。かつて、古い順にインストールせずにトラぶった例はよくありました。
    ただ、Visual Studio 6.0は.NET系のVisual Studioとは根本的に違いますので、私ははっきりとは言い切れませんが、経験上、これらのインストール順によるトラブルはないように思えます。本来なら私もVisual Studio 6.0から古い順にインストールすることを薦めるのですが、質問者さんがその順でトラぶっていますので、逆のインストールも試されてみると良いかもしれないと思いました。
    しかし、今回の問題は関連付けだけの問題のようですので、先にVisual Studio 6.0をインストールして、Visual Studio 2008で関連付けが変わらなかったとしても、手動で関連付けだけを変更する方がベストだと思います。このことを先に提案すれば良かったですね。気付かずにすみません。
    ちなみに、KimJunさんが開発されている環境はさすがにWindows Xpではないと思いますが、Visual Studio 6.0は公式にはWindows Xpより後のOSには非対応になっています。しかし、経験上、Windows 7でも今のところ問題なく動作しています。ただ、サービスパックは最新のものを当てるようにして下さい。

    開発ツール対応 OS 一覧
    http://www.microsoft.com/ja-jp/dev/support/tools.aspx

    いずれにしてもVisual Studio 6.0はWindows Xpより後のOSには非対応であり、よって、マイクロソフトからの正式な情報はないわけですから、Windows Xpより後のOSで使う場合は、経験上で語ることしかできません。Visual Stdio 6.0から古い順に.NETのVisual Studioをインストールして関連付けに問題が発生しなかった経験が私はありますが、それはWindows Xpの時でした。そのWindows Xpが使えなくなって、Windows 7に.NET系のVisual Studio 6.0をインストールしましたが、関連付けの問題は発生しませんでした。これが先に述べた私の経験ですが、このような経験を提供するぐらいのことしかできません。あくまで私の環境下における経験上の話ですので、必ずそうなるとは限らず、参考程度にして下さいという私の本音をここで述べておきます。

    ※1 マイクロソフト社が正式に推薦しています。

    Installing Visual Studio Versions Side-by-Side
    http://msdn.microsoft.com/en-us/library/ms246609(v=vs.90).aspx

    Note: 

    In general, you should install the earliest release of Visual Studio first, and then install subsequent versions of Visual Studio in the order in which they were released. For example, Visual Studio .NET 2002 should be installed before Visual Studio 2005, and Visual Studio 2005 should be installed before Visual Studio 2008.

    ただ、Visual Studio 6.0を含めたインストール順に関しては見つけられていません。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク KimJun 2014年10月16日 7:24
    2014年10月13日 7:02
    モデレータ
  • 質問者です。たくさんのアドバイスをいただき、ありがとうございます。

    最終的に、VisualStudio6.0/2008双方を一旦アンインストールし、再度インストールした結果、.slnが2008に関連付けされるようになりました。何が原因かは不明ですが、何とか落ち着きました。

    どうもありがとうございました。

    2014年10月16日 7:22