2010-12-09 4 views
1

'만든'사용자 지정 필드에 '사용'문제가 있습니다. 파워 셸에서 어셈블리는 LoadFrom 함수를 사용하여 스크립트에로드되며 어셈블리를로드 할 때 오류가 발생하지 않지만 어셈블리가로드되지 않은 것처럼 작동합니다.PowerShell + SharePoint에서 어셈블리를 추가 할 수 없습니다.

필드를 열거 할 때 내 사용자 지정 필드 중 하나에서 '제대로 설치되지 않았습니다'오류가 발생합니다. myListItem [ "myCustomField"]을 통해 사용자 정의 필드에 액세스하려고하면 CannotIndex 오류가 발생합니다.

Visual Studio에서 C#으로 정확한 코드를 작성하는 경우에도 동일한 오류가 발생하지만 내 어셈블리에 대한 참조를 추가하면 올바르게 작동합니다. (여기서 중요한 부분은 전원 셸에서 잘못 처리 한 사항, 즉 내부 이름이 아닌 표시 이름으로 필드에 액세스하는 것임을 나타냅니다.

내 어셈블리를 GAC에 추가하면 모든 것이 전원 셸에서 제대로 작동하지만 현재로서는이 옵션이 나와 있지 않습니다. DLL에서 어셈블리를로드 할 수 있어야합니다.

실마리가 있습니까?

답변

1

어셈블리. 그것은 단순히 신뢰 문제 이상입니다. 당신은 인내심이 있다면, 여기에서 시작하십시오 : Visual Studio에서 참조를 추가

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

단지 컴파일 과정이 아닌 런타임 로딩입니다. 실행시 종속 어셈블리 (참조)는 프로세스 실행 파일과 동일한 디렉토리에 배치됩니다 (GAC 참조가 아닌 경우). PowerShell의 경우 종속 어셈블리가 프로세스 실행 파일 (powershell)과 동일한 위치에 있지 않습니다. exe). 따라서 종속성 검사가 실패하는 것입니다. 그것들을 $ PSHOME에 복사했다면 아마 작동 할 것이지만 이것은 system32 아래의 권한있는 위치이므로 실행 가능한 해결책은 아닙니다.

- 오진

+0

통찰력에 감사드립니다. 그것을 $ PSHOME으로 복사하는 것은 효과가 있지만, 우리가 할 수있는 것이 아니라는 것이 옳습니다.하지만 그것은 좋은 리드입니다. – ferr

+0

괜찮 으면 답을 표시하십시오. – x0n

+0

우리는 $ PSHOME에 어셈블리를 넣을 수 없으므로 문제가 해결되지 않습니다. 필자는 어셈블리를 GAC 또는 powershell.exe와 동일한 폴더에 있어야 제대로 참조 할 수 있습니다. – ferr

0

PowerShell을 2 :

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

PowerShell을 1 : GAC에서로드와 동일한 방식으로 작동하지 않는다 LoadFrom 통해로드

[Reflection.Assembly]::LoadFrom('C:\Path\To\Assembly.dll') 
+0

PS2 버전 사용 .. 따옴표가 필요합니까? Add-Type -Path 'C : \ path \ name \ here \ fields.dll' – ferr

+0

따옴표는 선택 사항이지만 믿을 수는 없다고 생각합니다. – dahlbyk

+0

경로에 공백이 있지 않는 한 따옴표는 필요하지 않습니다. –

관련 문제