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