chris_walker가이 도움을 제공해주었습니다.
필자는이 기능에 이벤트 수신기를 추가했습니다. 그런 다음 필자는 기능 활성화 메서드에서 웹 응용 프로그램 루트를 검색했습니다. 마지막으로 txt 파일로 webpart 스키마를 열고 하나의 키워드 (~ sitecollection)를 실제 사이트 모음 URL로 바꿨습니다.
public class WebPartEventReceiver : SPFeatureReceiver
{
public override void FeatureActivated(SPFeatureReceiverProperties properties) {
SPSite site = properties.Feature.Parent as SPSite;
if (site != null) {
SPList webPartsGallery = site.GetCatalog(SPListTemplateType.WebPartCatalog);
SPListItemCollection allWebParts = webPartsGallery.Items;
SPListItem webPart = (from SPListItem wp in allWebParts where wp.File.Name == "your.webpart" select wp).SingleOrDefault();
if (webPart != null) {
string siteCollectionUrl = site.ServerRelativeUrl;
if (!siteCollectionUrl.EndsWith("/")) { siteCollectionUrl += "/"; }
string fileContents = Encoding.UTF8.GetString(webPart.File.OpenBinary());
fileContents = fileContents.Replace("~sitecollection/", siteCollectionUrl);
webPart.File.SaveBinary(Encoding.UTF8.GetBytes(fileContents));
}
}
}