2010-10-07 3 views
1

Я работаю над автоматическим сценарием для развертывания проектов sharepoint. Я использую webtemplate уровня sandbox, который должен применяться при создании сайта. У меня было много неприятностей, потому что похоже, что sharepoint кэширует список webtemplates и get-spwebtemplate не находит новый добавленный. То, как я сделал это работает так:Применение пользовательского webtemplate для sitecollection работает на powershell ise, а не на консоли powershell

[system.reflection.assembly]::LoadWithPartialName("Microsoft.Sharepoint") 
$site= new-Object Microsoft.SharePoint.SPSite($web_application_complete_url) 
$site.OpenWeb().ApplyWebTemplate($web_template_name) 
$site.Dispose() 

Как вы можете видеть, я использую .net Sharepoint API вместо командлетов. Это работает сладко в PowerShell ISE, но в консоли PowerShell он вызывает исключение в отношении ссылочного DLL:

Исключение вызывающего «ApplyWebTemplate» с «1» аргумент (ы): «Не удалось загрузить файл или сборку «XXX.SharePoint .Common, Version = 1.0.0.0, Culture = neutral, PublicK eyToken = 534c125b45123456 'или одна из его зависимостей. Система не может найти указанный файл e. " В C: \ сборки \ SharePointBuild.p s1: 318 голец: 37 + $ site.OpenWeb() ApplyWebTemplate < < < < ($ web_template_name) + CategoryInfo:. NotSpecified: (:) [], ParentContainsErrorRecordE xception + FullyQualifiedErrorId: DotNetMethodException

Сборка отлично зарегистрирована в GAC при установке решения для песочницы веб-шаблона в sitecollection.

Любые идеи? благодаря!

ответ

1

Есть ли вероятность, что вы используете 64-разрядную ISE и 32-битную консоль PowerShell (или наоборот)? Если это не так, то другая разница в том, что ISE работает в режиме COM STA, тогда как PowerShell Console запускается в MTA по умолчанию. Это будет иметь значение только в том случае, если SharePoint использует COM под обложками (что, я думаю, это так). Вы можете проверить это, запустив PowerShell консоли в режиме STA следующим образом:

C:\> Start-Process PowerShell -arg -sta 

Предполагая, что вы на PowerShell 2.0 для Start-Process командлета.

+0

Спасибо за ваш ответ! Поскольку у меня есть как 64, так и x86 исполняемые файлы powershell, я думаю, что оба работают на 64 бит. Я попробовал параметр -sta при открытии powershell, и он не работает. Тем не менее, я попробую свой путь – ivos

+0

... и это не сработало :( – ivos

+0

В этом случае вы можете попробовать использовать инструмент fuslogvw.exe из Windows SDK. Он отобразит больше информации о сбоях загрузки сборок. в разделе справки по использованию этого инструмента: http://msdn.microsoft.com/en-us/library/e74a18c4%28VS.71%29.aspx –

 Смежные вопросы

  • Нет связанных вопросов^_^