PowerShell + SharePoint не может добавить сборку - PullRequest
1 голос
/ 09 декабря 2010

У меня проблема с использованием созданного мной настраиваемого поля. В Power Shell сборка загружается в сценарий с помощью функции LoadFrom и не выдает ошибок при загрузке сборки, но действует так, как будто сборка не была загружена.

При попытке перечислить поля я получаю сообщение об ошибке «Неправильно установлен» в одном из моих пользовательских полей. При попытке получить доступ к пользовательскому полю через myListItem ["myCustomField"] я получаю ошибку CannotIndex.

Я получаю те же ошибки при написании точного кода в Visual Studio с C #, однако, как только я добавляю ссылку на свою сборку, она прекрасно работает там. (Важная часть здесь, это должно означать, что я я не делаю ничего неправильно в Power Shell, то есть обращаюсь к полю по его отображаемому имени, а не по внутреннему имени и т.д.

Если я добавлю свою сборку в GAC, в Power Shell все работает нормально, но в данный момент это не вариант. Мне нужно иметь возможность загрузить сборку из dll.

Есть какие-нибудь подсказки?

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

Сборка, загруженная через LoadFrom, не работает так же, как сборка, загруженная из GAC. Это больше, чем просто вопросы доверия. Если у вас есть терпение, начните здесь:

http://blogs.msdn.com/b/suzcook/archive/2003/05/29/choosing-a-binding-context.aspx

Добавление ссылки в Visual Studio только для процесса компиляции, а не для загрузки во время выполнения. Во время выполнения зависимые сборки (ссылки) помещаются в тот же каталог, что и исполняемый файл процесса (если они не были ссылками GAC.) В случае powershell ваши зависимые сборки не находятся в том же месте, что и исполняемый файл процесса (powershell. EXE). Вот почему поиск их зависимостей не удается. Если вы скопируете их в $ PSHOME, это, вероятно, сработает, но это нереализуемое решение, так как это привилегированное расположение под system32.

-Oisin

0 голосов
/ 10 декабря 2010

PowerShell 2:

Add-Type -Path C:\Path\To\Assembly.dll

PowerShell 1:

[Reflection.Assembly]::LoadFrom('C:\Path\To\Assembly.dll')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...