C# の null 許容型
kawa.xxx
kawalog
ImagineCupへ挑戦していてWinCE上で動くプログラムを書いているのですがその開発の中で詰まったことをまとめておきます。
ちなみにImagineCup関連の技術エントリが続いていますが、時系列がめちゃめちゃですがそのへんは気にしないでください。
次のような警告が出ました。いつから出ていたかは忘れた…
1競合を解決して警告を消去するために、app.config でアセンブリ "System.Data, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes" をバージョン "2.0.0.0" からバージョン "3.5.0.0" [C:\\Program Files\\Microsoft.NET\\SDK\\CompactFramework\\v3.5\\WindowsCE\\System.Data.dll] にマップし直してください。
2競合を解決して警告を消去するために、app.config でアセンブリ "System, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes" をバージョン "2.0.0.0" からバージョン "3.5.0.0" [C:\\Program Files\\Microsoft.NET\\SDK\\CompactFramework\\v3.5\\WindowsCE\\System.dll] にマップし直してください。
3c:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\Microsoft.Common.targets : warning MSB3247: 同じ依存アセンブリの異なるバージョン間での競合が見つかりました。
プロジェクト内に App.config をテキストファイルで作って下記の内容を追加したら解決しました。
要は .net のバージョンを書き換えてるってことですかね。いったいなぜこうなったのかよくわかりません…うーん。.NET Framework2.0 で作ってたコードをコピペで 3.5 のソリューションに移したからかな?
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3<runtime>
4<assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1">
5<dependentassembly>
6<assemblyidentity culture="neutral" publickeytoken="969db8053d3322ac" name="System.Data" />
7<bindingredirect newVersion="3.5.0.0" oldVersion="2.0.0.0" />
8</dependentassembly>
9<dependentassembly>
10<assemblyidentity culture="neutral" publickeytoken="969db8053d3322ac" name="System" />
11<bindingredirect newVersion="3.5.0.0" oldVersion="2.0.0.0" />
12</dependentassembly>
13</assemblybinding>
14</runtime>
15</configuration>