Otto
그는 물었다 12년 전
76

C # 의 iCal 파일 생성

좋은 방법을 찾고 i& # 39 m, c # 의 생성 iCalendar 파일 (.ics) (asp.net). # 39, ve com/downloads/global/corporate/iar/esg_prosupport. i& 심아이엔큐 부족한 자원, 단 한 것은 그동안 몇 대한 지지를 * 필드용 qp 캐리지 리턴 - 필드 및 있는 줄 바꿈.

예를 들어, , t # 39 설명스크립트 필드이므로 isn& 첫 줄만 표시할 수 있고 나머지 제대로 인코딩되지 손상되는 있는 정보를 *.ics 절실해졌습니다.

39 m, i& 기존 클래스를 생성할 수 있는 파일 및 / 또는 찾는 .ics qp * 클래스를 생성할 수 있는 보다 작은 자연수이다.

Doug
그는 10년 전 댓글을 달았습니다
8

비록 이 질문은 들어온넘 오래 전, 생각해봤죠 I& qp 필드는 # 39 점을 지적하고, d 일부가 아니라 icalendar 표준 (프카렌다 2.0). 이들은 프카렌다 부분은 거의 (판매업체에서 경우) 을 사용한 표준 (프카렌다 1.0) 가 있다. # 39 는 자체 아이캘린더 데이터를 해석하는 방법을 탈출이라니요 that& qp 의 많이유 쉽고 더 이상.

답변 9 개

다리자이커 를 사용하고, 그 좋은 얘기입니다. Ical 파일 및 얻을 수 있는 좋은 충족되었으며 열어 해당 data-in 객체 모델. 그러나 작동하잖아 멋지구리해요 썻냐면 베타, 우리를 위해.

11월 2016년 편집하십시오

이 라이브러리는 iCal.NET 로 재발매 개발 및 다른 사람이 선택될 했지만 더 이상 사용되지 않습니다.

릴리스에는 대한 정보. rianjs.net/2016/07/dday-ical-is-now-ical-net

소스에 대해 깃허브: github.com/rianjs/ical.net

39, ve found) 이 일을 하는 것이 가장 쉬운 방법은 i& 너회의 html 마크업을 사용하여 마이크로포맷.

39 you& iCalendar 파일을 생성할 수 있는 경우, re 어졌다면 사용할 수 있습니다 다음 링크 헤카렌다 마이크로포맷 # 39, & # 39 Calendar& 추가합니까 등 포함. 가리키는:

[# 39 을 포함한 전체 URL 너회의 page& http://로] , http://feeds.technorati.com/events/

테크노라티 페이지가 다시 분석하고 이 페이지에 추출됩니다 헤카렌다 정보 및 sends iCalendar 파일을 클라이언트입니다.

Doug
그는 10년 전 댓글을 달았습니다
3

이 방법은 아주 아주 잘 작동합니까 (NerdDinner.com) 에서 사용되는 것으로 보인다. 즉, I& # 39, ve got to give +1 의 다리자이커 (비록 제가 바이어스됨 키워봤지 ):)

Gabriel Espinoza
그는 5년 전 댓글을 달았습니다
0

내가 마음에 don& # 39, 이 방법의 에로남이네 technorati it& # 39 의 사양명세를 서비스 종료 또는 심지어 변경할 수 있다. # 39 의 어쨌든요 it& 좋습니다.

I wrote a 씨는 이 기능을 처리할 수 있습니다. # 39 의 첫 번째 행은 74 만 종료 에로남이네 이 호환일 it& 주로 문자 대신 75 (74) 가 처리할 수 있는 공간을 이어지는 선).

 Private Function RFC2445TextField(ByVal LongText As String) As String

     LongText = LongText.Replace("\", "\\")
     LongText = LongText.Replace(";", "\;")
     LongText = LongText.Replace(",", "\,")

     Dim sBuilder As New StringBuilder
     Dim charArray() As Char = LongText.ToCharArray

     For i = 1 To charArray.Length
         sBuilder.Append(charArray(i - 1))
         If i Mod 74 = 0 Then sBuilder.Append(vbCrLf & " ")
     Next

     Return sBuilder.ToString

 End Function

내가 이 기능을 사용하여 요약 및 대한 우리의 ICS 급지가. 그냥 급지가 있는 선은 이미 앞에 붙인 필드 (예를 들어, 夸약 이벤트 롱테스트 = &quot title"). 상당히 긴 s not as long as you set 캐싱과는 it& # 39, 비용이 너무 많이 한 작업.

reexmonkey
그는 6년 전 댓글을 달았습니다
0

내가 사랑하는 코드에 영감을 받은 것이 아니라 문자 지혜 있는 구문 분석 (C # 사용하여 표시되어도) 블록 () 이다. It 관련 질문은 에서 확인할 수 있다. http://stackoverflow.com/a/27164955/914512

, (ical 2.0) 과 qp ical don& # 39 가지 않을 수 없었다.

    • (바커 1.0) 에서 사용되는 qp 많이유 바커 행 구분 문자를 나타내기 위해, 예를 들어 인쇄할 수 없음 (= 0d = 0a). 기본값입니다 바커 인코딩은 7 비트 ascii 가 아닌 문자를 나타내기 때문에, 때때로 qp 사용해야 할 수 있습니다 재지정입니다 기본값입니다 인코딩입니다 있었지만, 다른 바커 호환일 party) 은 통신 이해해야 할 필요는 없다.)

예를 들어, & # 39 의 특수 문자를 사용하여, iCal , # 39, \n& 이스케이프합니다 표시됩니다. 인코딩은 UTF-8 과 qp 이를 지원할 수 있는 모든 정당이 기본값입니다 ical 호환일 합니다 에서 완전히 불필요한 ical 2.0 (vcard 를 우선적으로 및 3.0).

고객의 요구사항을 명확히 하기 위하여 뒤로를 / 행동을 할 수 있습니다. Ical 바커 및 사이에 혼란이 있을 것으로 보인다.

Andrea Antonangeli
그는 5년 전 댓글을 달았습니다
0

Utf-8 기본값입니다 인코딩입니다 있는 강조표시를 주셔서 감사합니다.

텍스트 필드는 rfc 2445 따르면, 의견 및 설명. 필드 테스트를 위한 규칙을 다음과 같습니다. [1] 한 줄로 텍스트 필드는 이내임 75 옥텟. [2] 랩할 달성됩니다 크레프 가 삽입하여 공백 등이 뒤를 이었다. [3] 인코딩되지\ (역동기화 슬래시 (slash), 문자 등 여러 가지가 있어야 합니다. (세미콜론), (쉼표) 와 줄 바꿈. \\ (역동기화 슬래시 (slash) 를 구분 기호로 사용할 수 있습니다. \, \n

예: 다음 예는 포맷되었을 함께 속성 줄 바꿈 속성 값:

 DESCRIPTION:Meeting to provide technical review for "Phoenix"
   design.\n Happy Face Conference Room. Phoenix design team
   MUST attend this meeting.\n RSVP to team leader.

체크아웃하려고 http://www.codeproject.com/KB/vb/vcalendar.aspx

39 이 doesn& 처리할 수 있지만, t 의 코드는 미삭 질문과대답 qp 필드용 like you there and 수정할 수 있습니다.

예를 들어, i& # 39 m 누각되었습니다 함께 맞춤형 시간대. 그래서 이곳에서 스니핏 방법을 보여 주는 이 시간대 설정할 수 있습니다 (ics 와 보내 브라우저에서 asp.net).

//set a couple of variables for demo purposes
DateTime IcsDateStart = DateTime.Now.AddDays(2);
DateTime IcsDateEnd = IcsDateStart.AddMinutes(90);
string IcsSummary = "ASP.Net demo snippet";
string IcsLocation = "Amsterdam (Netherlands)";
string IcsDescription = @"This snippes show you how to create a calendar item file (.ics) in ASP.NET.\nMay it be useful for you.";
string IcsFileName = "MyCalendarFile";

//create a new stringbuilder instance
StringBuilder sb = new StringBuilder();

//begin the calendar item
sb.AppendLine("BEGIN:VCALENDAR");
sb.AppendLine("VERSION:2.0");
sb.AppendLine("PRODID:stackoverflow.com");
sb.AppendLine("CALSCALE:GREGORIAN");
sb.AppendLine("METHOD:PUBLISH");

//create a custom time zone if needed, TZID to be used in the event itself
sb.AppendLine("BEGIN:VTIMEZONE");
sb.AppendLine("TZID:Europe/Amsterdam");
sb.AppendLine("BEGIN:STANDARD");
sb.AppendLine("TZOFFSETTO:+0100");
sb.AppendLine("TZOFFSETFROM:+0100");
sb.AppendLine("END:STANDARD");
sb.AppendLine("END:VTIMEZONE");

//add the event
sb.AppendLine("BEGIN:VEVENT");

//with a time zone specified
sb.AppendLine("DTSTART;TZID=Europe/Amsterdam:" + IcsDateStart.ToString("yyyyMMddTHHmm00"));
sb.AppendLine("DTEND;TZID=Europe/Amsterdam:" + IcsDateEnd.ToString("yyyyMMddTHHmm00"));

//or without a time zone
//sb.AppendLine("DTSTART:" + IcsDateStart.ToString("yyyyMMddTHHmm00"));
//sb.AppendLine("DTEND:" + IcsDateEnd.ToString("yyyyMMddTHHmm00"));

//contents of the calendar item
sb.AppendLine("SUMMARY:" + IcsSummary + "");
sb.AppendLine("LOCATION:" + IcsLocation + "");
sb.AppendLine("DESCRIPTION:" + IcsDescription + "");
sb.AppendLine("PRIORITY:3");
sb.AppendLine("END:VEVENT");

//close calendar item
sb.AppendLine("END:VCALENDAR");

//create a string from the stringbuilder
string CalendarItemAsString = sb.ToString();

//send the ics file to the browser
Response.ClearHeaders();
Response.Clear();
Response.Buffer = true;
Response.ContentType = "text/calendar";
Response.AddHeader("content-length", CalendarItemAsString.Length.ToString());
Response.AddHeader("content-disposition", "attachment; filename=\"" + IcsFileName + ".ics\"");
Response.Write(CalendarItemAsString);
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();

도움이 될 수 있지만 다른 늦었음요 네트워크임을 알고 있습니다. 저의 경우는 내가 작성했습니까 .ics 확장명은 정보정의다음 함께 텍스트 파일

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Calendly//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
DTSTAMP:20170509T164109Z
UID:your id-11273661
DTSTART:20170509T190000Z
DTEND:20170509T191500Z
CLASS:PRIVATE
DESCRIPTION:Event Name: 15 Minute Meeting\nDate & Time: 03:00pm - 03:15pm (
 Eastern Time - US & Canada) on Tuesday\, May 9\, 2017\n\nBest Phone Number
  To Reach You :: xxxxxxxxx\n\nany "link": https://wwww.yahoo.com\n\n
SUMMARY:15 Minute Meeting
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

가져다줄래요 통했다.

그래서 추천합니까 복잡하고, ical 라이브러리를 사용할 수 있습니다. 디데이 좋은 인프라일까요 풀려났거든 솔루션입니다. 내가 없는 반복 이벤트에 대한 지원, 전체 it didn& # 39 마지막 점검됩니다 있지만, 그 외 괜찮은 것 같네요. 말해둘꼐요 테스트하려면 여러 개의 클라이언트를 말한다.