Xamarin.Formsで突然のCould not load file or assembly 'System.Runtime.Extensions'
昨日Debugビルドしていろいろ動作を確認て出来たと思い、Releaseビルドしてざっと確認後配布したら今日テストの方からある画面立ち上がんねーぞゴラァとお叱りをうけました(実際はもっと丁寧な言葉遣いです)。
なにやら
[06:47:13.126]:LTERR:VMToView:ex raised.vm is HogeVM ex=System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.Extensions' or one of its dependencies File name: 'System.Runtime.Extensions' at System.AppDomain.Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity) <0x10042ce50 + 0x003ec> in <filename unknown>:0 at System.AppDomain.Load (System.Reflection.AssemblyName assemblyRef) <0x10042cd70 + 0x0001f> in <filename unknown>:0 at System.Reflection.Assembly.Load (System.Reflection.AssemblyName assemblyRef) <0x100455790 + 0x00023> in <filename unknown>:0 at Xamarin.Forms.Xaml.XamlParser.GetElementType (Xamarin.Forms.Xaml.XmlType xmlType, IXmlLineInfo xmlInfo, System.Reflection.Assembly currentAssembly, Xamarin.Forms.Xaml.XamlParseException& exception) <0x100ead3e0 + 0x003c7> in <filename unknown>:0 at Xamarin.Forms.Xaml.Internals.XamlTypeResolver.Resolve (System.String qualifiedTypeName, IServiceProvider serviceProvider, Xamarin.Forms.Xaml.XamlParseException& exception) <0x100eb2280 + 0x00323> in <filename unknown>:0 at Xamarin.Forms.Xaml.Internals.XamlTypeResolver.Xamarin.Forms.Xaml.IXamlTypeResolver.Resolve (System.String qualifiedTypeName, IServiceProvider serviceProvider) <0x100eb21c0 + 0x0002f> in <filename unknown>:0 at Xamarin.Forms.Xaml.StaticExtension.ProvideValue (IServiceProvider serviceProvider) <0x100ea18a0 + 0x002ff> in <filename unknown>:0 at HogeView.InitializeComponent () <0x10233cc00 + 0x0d7bf> in <filename unknown>:0
などとエラーが出てる模様。
これだけだと皆目見当つかないのでXAMLのContentViewの中身をまるっとコメントアウトして画面が出るのを確認、少しずつコメントアウトを外していったところ、どうやら次の箇所の模様。
<Label.FormattedText> <FormattedString> <Span Text="Hoge"/> <Span Text="{x:Static system:Environment.NewLine}" /> <Span Text="Fuga" /> </FormattedString> </Label.FormattedText>
Labelで改行して表示したく、それをXAMLで行うにはどうしたものかとググって出てきてこれで勝つると思いデバッグ実行で確認してよしと思ってましたが、Releaseだと上のようなエラーをはいていたようです。
結局次のような感じにしてReleaseビルドでも動くようになりました。
namespace AppCommon { public static class Constants { public static readonly string HogeFuga = "Hoge\r\nFuga"; } }
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:appCommon="clr-namespace:AppCommon;assembly=AppCommon"> <Label Text="{x:Static appCommon:Constants.HogeFuga}"> </ContentView>
みんな配る前にはちゃんと配るもので動作確認しようね。お兄さんとの約束だぞ(´・ω・`)
しかし俺たちのXamarin沼との戦いはまだこれからだぜ…(未完)
追記
<Label Text="Hoge
Fuga"/>
でいいと教えていただきますた(´・ω・`)