Я взял файл wsp и сделал свой stsadm -o addolution как обычно. Затем я вошел в центральная администрация-> управление решениями, и он отлично проявил себя. Затем развернул веб-часть, пока никаких проблем.
Проблема в том, что когда я иду добавить его в галерею веб-частей (Галерея веб-частей: новые веб-части), обычно веб-часть находится в списке, я устанавливаю флажок рядом с ней и нажимаю заполнить галерею, но она не отображается в списке? Могу ли я что-то упустить в моем manifest.xml, чтобы вызвать это? Я просто написал и развернул другую веб-часть точный таким же образом, и все прошло нормально. Кроме того, я написал фиктивную веб-часть, которая ничего не делает, кроме печати «работает», и попробовал ее, получив те же результаты.
Есть идеи?





Иногда у меня было такое же поведение. Наконец, мы написали cmd-инструмент, который запускает "stsadm - o addolution", а затем добавляет в галерею веб-частей все xml-файлы для веб-частей.
Есть исходник (немного отредактированный):
string cmd_StsAdm = @"C:\Program files\Common files\Microsoft Shared\web server extensions\12\BIN\stsadm.exe";
string url_Site = "http://localhost";
string url_Web = "http://localhost";
if ( string.IsNullOrEmpty( url_Web ) ) { url_Web = url_Web; }
Console.WriteLine( "Deleting sharepoint solution" );
string args_DeleteSolution = string.Format( "-o deletesolution -name \"{0}\" -override", startInfo.fileNameWsp );
ShellWait( cmd_StsAdm, args_DeleteSolution );
string filePathWsp = "**** path to wsp file ****";
Console.WriteLine( "Adding sharepoint solution" );
string args_AddSolution = string.Format( "-o addsolution -filename \"{0}\"", filePathWsp );
ShellWait( cmd_StsAdm, args_AddSolution );
Console.WriteLine( "Deploy sharepoint solution" );
string args_DeploySolution = "-o deploysolution -name \"{0}\" -local -allowGacDeployment -url \"{1}\" -force";
args_DeploySolution = string.Format( args_DeploySolution, startInfo.fileNameWsp, url_Web );
ShellWait( cmd_StsAdm, args_DeploySolution );
int counter = 0;
foreach ( CWebPartVytvoreniInfo wpRslt in solutionInfo.WebParts ) {
counter++;
string msg = string.Format( "Aktivace web part {0} - {1} z {2}", wpRslt.Info.Nazev, counter, solutionInfo.WebParts.Count );
Console.WriteLine( msg );
string args_ActivateFeature = "-o activatefeature -id {0} -url {1}";
args_ActivateFeature = string.Format( args_ActivateFeature, wpRslt.Info.ID, url_Site );
ShellWait( cmd_StsAdm, args_ActivateFeature );
}
Console.WriteLine( "Connecting to sharepoint site" );
using ( Microsoft.SharePoint.SPSite site = new Microsoft.SharePoint.SPSite( url_Site ) ) {
Microsoft.SharePoint.SPList ctg_WebParts = site.GetCatalog( Microsoft.SharePoint.SPListTemplateType.WebPartCatalog );
counter = 0;
foreach ( WebPartInfo wpInfo in solutionInfo.WebParts ) {
counter++;
string dirPath = System.IO.Path.Combine( wpInfo.DirectoryPath );
string fileName = wpRslt.Info.Nazev + ".webpart";
string filePath = System.IO.Path.Combine( dirPath, fileName );
string msg = string.Format( "Uploading file '{0}' - {1} z {2}", fileName, counter, solutionInfo.WebParts.Count );
Console.WriteLine( msg );
using ( System.IO.FileStream fstrm = OtevritSoubor( filePath ) ) {
ctg_WebParts.RootFolder.Files.Add( fileName, fstrm, true );
}
}
}
Убедитесь, что файл .webpart развернут в папке wpcatalog вашего веб-сайта. В зависимости от того, какой каталог был указан при подготовке веб-приложения, вы должны найти его в таком месте:
c: \ Inetpub \ wwwroot \ wss \ VirtualDirectories \ 80 \ wpcatalog
Я обнаружил, что если я развертываю веб-часть, которая была сломана ранее, мне пришлось вручную удалить ее после удаления решения перед повторным добавлением решения.
вау ... оказалось, что все, что мне не хватало, было "общедоступным" объявлением в моем классе!?!
Я чувствую себя идиотом. Но также мне пришлось вручную удалить его, чтобы он распознался. Спасибо всем!
Целевой .NET Framework был для меня проблемой. Я нацелился на .NET 3.5, и у меня это не сработало. Поэтому вместо этого я нацелился на .NET 3.0, и это хорошо сработало.
У меня была та же проблема с веб-частью, над которой я работал, но в моем случае я просто забыл поле добавить веб-часть в «Элементы компонента». Сделать это:
.feature.> (отмечена на изображении), чтобы добавить ее к функции.ПРИМЕЧАНИЕ. Вы также можете сделать это, нажав кнопку Manifest внизу и отредактировав файл манифеста вручную, если вы знаете, что делаете.

Это действительно может помочь другим начинающим пользователям SharePoint.
Спасибо, в моем случае файл функций взят из запущенного проекта, а добавленные веб-части не были включены в функции, поэтому я добавил, как вы сказали, и это сработало как шарм.