Tôi đã làm việc với một số mã mà ai đó đã trao cho tôi một bộ đếm thời gian công việc. Ông đã không cung cấp mã kích hoạt tính năng thực tế vì vậy tôi đã phải viết nó, Tất nhiên. Tôi đã lợi dụng Andrew Connell nổi tiếng blog bài về đối tượng.
Tôi đang sử dụng Visual Studio 2010 và triển khai giữ thất bại với lỗi "lỗi xảy ra trong triển khai bước 'Thêm giải pháp': Đối tượng tham chiếu không đặt một thể hiện của một đối tượng."
Tôi đã lấy mã của mình quá theo nghĩa đen. Tôi phạm vi tính năng web ứng dụng cấp, như được hiển thị:
Kết quả là, các thuộc tính được gửi đến người nhận từ các ứng dụng web, không phải là một tập hợp trang web. Cuối cùng, Mã trông như thế này:
công chúng ghi đè lên hiệu FeatureActivated(Thuộc tính SPFeatureReceiverProperties)
{// Không làm như sau với tính năng web ứng dụng scoped, nó dẫn đến thất vọng
// Trang web SPSite = thuộc tính.Feature.Parent như SPSite;SPWebApplication wa = thuộc tính.Feature.Parent như SPWebApplication;
Nếu (WA == null) ném ngoại lệ mới("webapp2 là không.");
foreach (SPJobDefinition việc làm tại wa.JobDefinitions)
{Hãy thử
{
Nếu (công việc.Tên == List_JOB_NAME)công việc.Xóa bỏ();
}
bắt (Ngoại lệ e)
{
ném ngoại lệ mới("điểm đánh dấu 2");
} // bắt ngoại lệ e
}// cài đặt công việc
WeatherForecastTimerJob weatherForecastTimerJob =
mới WeatherForecastTimerJob(List_JOB_NAME, WA);Lịch trình SPMinuteSchedule = mới SPMinuteSchedule();
lịch trình.BeginSecond = 0;
lịch trình.EndSecond = 59;
lịch trình.Khoảng thời gian = 5;
weatherForecastTimerJob.Schedule = lịch trình;
weatherForecastTimerJob.Update();}
Chìa khóa take-away là khi các tính năng được scoped để một ứng dụng web, SPFeatureReceiverProperties SharePoint đi để nhận tính năng của bạn có các thông số cấp ứng dụng web. Mục nhập blog cũ của Andrew giả định nó scoped để bộ sưu tập trang web.
</kết thúc>
Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin