[.NET] system.xamlへの参照

.NET Framework 4.0をターゲットにしたソリューションから3.5用の実行形式も生成するために、VS2010でターゲットを.NET Framework 3.5に切り替えビルドを実行したところ以下の警告が出た。

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3267: フレームワーク アセンブリであるプライマリ参照 “System.Xaml” は、現在ターゲットされているフレームワークで解決できませんでした。”.NETFramework,Version=v3.5″。この問題を解決するには、参照 “System.Xaml” を削除するか、”System.Xaml” を含むフレームワーク バージョンにアプリケーションを再ターゲットしてください。

警告レベルなのでビルドを止めるエラーとは異なる。ビルドそのものは終わっているようだ。

system.xamlは.NET 3.5には存在せず、.NET 4.0以降に存在するファイルらしい。以下のmsdnの質問は2010のプロジェクトをvs2008で使おうとしたら .NET 3.5と混在してしまい、system.xamlがないエラーが出ているというもの。コメントにあるように、トップのものだけではなくソリューション全体にわたって各projectを .NET 4とCLR v4を使用するように設定すればいい。

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/c281e42a-445f-4ef4-b3e8-032efb1a9297

自分の手元のファイルをgrepで調べてみると、下部プロジェクトの csprojに

  <Reference Include="System.Xaml" />

が入ったままになっている。
プロジェクトの参照設定で C:\Windows\Microsoft.NET\Framework\v4.0.30319\ にあるSystem.xaml.dllへの参照を追加するとよい、とstackoverflow.comで回答を書いていた人がいた。

http://stackoverflow.com/questions/3408544/cannot-find-system-xaml

手元で実際に.NET 3.5ターゲットのビルドで参照パスを追加してSystem.xamlを見に行くようにしてみると、他の参照にも影響してしまってイマイチだった。もし追加するなら個別にSystem.xaml.dllそのものへの参照を追加するのが急がば回れで結局早いかもしれない。

もう一つに気になるのは、C#のプロジェクト上でターゲットを3.5にした後も、リンクするC++のプロジェクトのプロパティウィンドウから .NET 4.0の記述が消えないこと。

.NET v4.0の記述

これは関連プロジェクトの中に 4.0を記述したファイルを見つけることができず解決できていない。そもそも、この表示を出しているプロパティウィンドウ内ではフレームワークを変更する操作ができない。一体どこを見ているのだろう。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。