Google calendar api 将iCal.net与Google日历一起使用

Google calendar api 将iCal.net与Google日历一起使用,google-calendar-api,icalendar,dday,ical-dotnet,Google Calendar Api,Icalendar,Dday,Ical Dotnet,在一个调度官员的应用程序中,我将DDay iCal库替换为iCal.Net。许多官员喜欢在谷歌日历上使用“从URL添加”来添加游戏日历,这样他们就可以在手机上看到自己的日程安排。然而,谷歌日历似乎不喜欢现在正在生成的.ics文件。它可以很好地导入,但尝试通过URL添加它不会导致显示任何事件。我与其他客户端(Outlook、O365等)通过URL添加链接时没有遇到任何问题,文件在文本编辑器中显示正常。此问题似乎是由OpenTextFileWriter方法引起的,该方法在默认ASCII编码中包含字节

在一个调度官员的应用程序中,我将DDay iCal库替换为iCal.Net。许多官员喜欢在谷歌日历上使用“从URL添加”来添加游戏日历,这样他们就可以在手机上看到自己的日程安排。然而,谷歌日历似乎不喜欢现在正在生成的.ics文件。它可以很好地导入,但尝试通过URL添加它不会导致显示任何事件。我与其他客户端(Outlook、O365等)通过URL添加链接时没有遇到任何问题,文件在文本编辑器中显示正常。

此问题似乎是由OpenTextFileWriter方法引起的,该方法在默认ASCII编码中包含字节顺序标记(BOM)。以下是生成此文件的原始代码:

Dim MySerializer As New CalendarSerializer()
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter(strPath, False)
file.Write(MySerializer.SerializeToString(MyCal))
file.Close()
在谷歌日历和苹果的“订阅此日历”生效之前,我必须将生成ICS文件的代码更改为:

Dim MySerializer As New CalendarSerializer()
Dim file As System.IO.StreamWriter
Dim utf8WithoutBom As New System.Text.UTF8Encoding(False)
file = My.Computer.FileSystem.OpenTextFileWriter(strPath, False, utf8WithoutBom)
file.Write(MySerializer.SerializeToString(MyCal))
file.Close()

有趣的是,Outlook和Office 365对BOM表并不挑剔,而且在那里工作得很好。

这里没有足够的信息来回答您的问题。我猜您正在生成一些可以通过URL访问的ICS文本,并且您正在使用ical.net生成这些文本?你能展示一些旧的/正在使用的ICS文本吗?新的文本有哪些变化?是的,你是对的。我使用ical.net生成了一个ICS文件,然后通过URL使其可用。我想我已经解决了这个问题,我会很快发布答案。