2012年12月17日月曜日

Visual Studio Express エディションで開けないプロジェクトを開けるようにするには

Express エディションの Visual Studio は、無償版であり一部機能が限定されています。そのため、有償版の Visual Studio で作成したプロジェクトが開けない事も多々あります。ですが、実際には全てが全て扱うことができないのではなく、一部のプロジェクトは Express エディションでも利用する事が可能です。

個人的には当然といいますか、Workflow Foundation 回りで関連してくるのですが、Workflow Foundation 関係のプロジェクトとして「ワークフローコンソールプロジェクト」があります。WF4 のワークフローを扱うコンソールプロジェクトなのですが、ワークフローデザイナーの部分を除けば、他のコンソールプロジェクトと同様の構成であったりします。

ですが、Express エディションでプロジェクトを開こうとすると
「このエディションでは対応していない機能です」
と言われてしまい、読み込んではくれません。

「デザイナーが使えないのは百も承知だ。いいからだまってプロジェクトくらい読み込みやがれ」と憤ってしまうのですが、実は読み込ませることは手段があったりします。

Visual Studio でプロジェクトの種類、必要な拡張機能についてを決めているのは proj ファイルに記載されているとある値です。

   1:  <?xml version="1.0" encoding="utf-8"?>
   2:  <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   3:    <PropertyGroup>
   4:      <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
   5:      <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
   6:      <ProductVersion>10.0</ProductVersion>
   7:      <SchemaVersion>2.0</SchemaVersion>
   8:      <ProjectGuid>{6192E5B9-93A2-4632-9A90-A31096374EBA}</ProjectGuid>
   9:      <ProjectTypeGuids>{32f31d43-81cc-4c15-9de6-3fc5453562b6};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids>
  10:      <OutputType>Exe</OutputType>
  11:      <StartupObject>Sub Main</StartupObject>
  12:      <RootNamespace>Sample1</RootNamespace>
  13:      <AssemblyName>Sample1</AssemblyName>

上記は Visual Studio 2010 Professional エディションで作成した、ワークフローコンソールプロジェクトの vbproj ファイルです。この中で 9 行目の projectTypeGuids がそれにあたります。ここに記載されている guid にて利用される機能やプロジェクトの種類が決められています。

言い換えるとこの部分を別なものに書き換えてあげれば読み込ませることは可能になります。ただしデータベースプロジェクトなど、完全に機能依存しているようなプロジェクトはできませんが、ワークフローコンソールプロジェクトのように部分的に影響しているものであれば、読み込ませ(場合によっては実行・ビルドも)ることができるようになります。

ネット上のサンプルとしては結構 Express エディション非対応なものが見受けられますが、今回の方法を使うと利用できるものもありますので、一度試してみるといいかもしれません。

・・・と、実はこんな感じでできたのは Visual Studio 2010 Express エディションまでで、Visualo Studio 2012 Express ではこの方法が使えませんでした・・・。

今のところ Visual Studio 2012 Express で同様のことをやるには、同じようなプロジェクトを自前でつくって各種ファイルを取り込んであげるくらいしかなさそうです・・・。
悔しいのでもう少し調べてみようと思います。

0 件のコメント:

コメントを投稿