DDay iCalライブラリのフォーラムに投稿しましたが、ユーザーがこの状況に遭遇した場合に備えて、ここに投稿することを考えました。私のフォーラム投稿から:
iCalファイルでタイムゾーンセクションが生成される方法にバグのように見えるものに遭遇しました。夏時間をサポートしないタイムゾーンを追加すると、空のVTIMEZONEセクションが作成され、iCalが破損します。コードを一目見ただけで、このセクションはTimeZoneInfo.GetAdjustmentRules()によって返されるコレクションによって生成されていると思います。このコレクションは、DSTを監視しないタイムゾーンでは空です。
投稿の下部にあるコードは、この問題を示しているはずです。
これがバグではない場合(そしてバグであるとは確信していません!)、これらを機能させるためのガイダンスをいただければ幸いです。
void Main()
{
foreach (var tz in TimeZoneInfo.GetSystemTimeZones())
{
var cal = GetCal(tz);
Console.WriteLine(tz.Id + " :: " + tz.SupportsDaylightSavingTime + " :: " + cal.TimeZones.First().ID);
}
}
iCalendar GetCal(TimeZoneInfo timeZone)
{
var calendar = new iCalendar();
calendar.AddChild(iCalTimeZone.FromSystemTimeZone(timeZone));
var @event = new Event
{
Name = "VEVENT",
DTStart = new iCalDateTime(DateTime.Now, timeZone.Id),
DTEnd = new iCalDateTime(DateTime.Now + TimeSpan.FromHours(1))
};
calendar.Events.Add(@event);
return calendar;
}