PSUOBBAAToolを作っているときにすごく悩んでいたのが、Visual C++2010の.Net Frameworkバージョンの変更方法でした。
C#やASP.NETはプロジェクトのプロパティで変更できるのですが、C++/CLIプロジェクトにはないんですよねぇ・・・
PSUOBBAAToolは、以下のプロジェクトでつくっているのです。
- PSUOBBAATool C#/WPF
- Bri_NvAPI2.DLL C++/CLI マネージ/アンマネージ混在
という状態で、.Net Framework は4 Client Profileを使用していますが、C++/CLIはデフォルトで.Net Framework 4を選択します。
Client Profileは4のサブセットだしいいじゃんという話もないわけではないのですが、ユーザーさんが使用するランタイムはClient Profileだけでいいわけで、大きいフルセット版(開発ならExtended)なんていらないわけですよ。
また、Windows Installerプロジェクトでも、インストーラーの起動条件を4 Client Profileに指定しているため、怒られてしまいます。
余談になりますが、2010Windows InstallerプロジェクトでアンマネージドDLLを含んでいると、やっぱりおこられたりします;;
(エラーではなく、警告ですけどね)
さて、C++/CLIプロジェクトではどのように変更すればよいのでしょうか。
MSDNライブラリを検索して、やっと見つけました。
GUIでは変更できません。プロジェクトファイル(*.vcxproj)を直接変更する必要があります。
おいおい(゜o゜)
うーん、VS.Netから、C++はずっと投げやりサポートに思ってたのですが・・・2003/2005/2008/2010と、5バージョン目でも変わってませんね^^;
さて、どのようにやるかといいますと・・・vcxprojをテキストエディタなどで開きまして、
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
というような記載があります。
ここを変更することになるのですが、Client Profileを指定したい場合はひとつ追加してあげることになります。
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
(Code Formatterが、タグ文字を全部大文字にしちゃってます^^;)
追記 2010/08/29
プロジェクトにより、TargetFrameworkVersionタグがvcxprojに存在しない場合があるようです。
その場合は、
<PropertyGroup Label="Globals">
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
</PropertyGroup>
このように、PropertyGroup Label属性=”Globals"の内部に記載すればよいようです。
追記ここまで
このように変更して、Visual Studio2010で開きなおせば、
このように.Net Framework 4 Client Profileに変更することができます。
他の言語のように.Net Framework 3.5で開発したい場合はどうするんでしょう・・・
v3.5に変更すればよいように思えますが、リンク先にあるように・・・
Visual Studio 2008SP1が必要です。
な、なげやり過ぎる・・・
それにしても、VS2010のヘルプがむっちゃくちゃ使いづらいのですが・・・
VS2008までのMSDNライブラリのほうがいろいろな方面から検索できて、すごーいつかいやすいわ~