필자는 지난 주 특정 목록 인스턴스에 몇 가지 이벤트 수신기를 추가 하는 것 이라고 하는 기능. (내가 여기에 그 목록 수신기에 대해 좀 블로그).
명령줄을 사용 하 여, 오류와 함께 기능을 설치할 수 있는 (하지만 아래 숨겨진된 오류를 참조 하십시오). 나는 사이트에 기능을 배포 하 려 할 때, 이끼 "FileNotFoundException의 불평" 오류. 이 블로그 항목에 설명 합니다 나는 그것을 해결 하는 방법.
이 모스 줬 어 웹 브라우저에 오류:
기능 ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ 때문에 설치할 수 없습니다 이벤트 수신기 어셈블리 "xyzzyFeatureReceiver_0 로드" 실패: System.IO.FileNotFoundException: 파일 또는 어셈블리를 로드할 수 없습니다 ' xyzzyFeatureReceiver_0’ 또는 해당 종속성 중 하나. 시스템 지정한 파일을 찾을 수 없습니다..
파일 이름: ' xyzzyFeatureReceiver_0’
System.Reflection.Assembly.nLoad에서(AssemblyName 파일 이름, 문자열 코드 베이스, 증거 assemblySecurity, 어셈블리 locationHint, StackCrawlMark& stackMark, 부울 throwOnFileNotFound, 부울 forIntrospection)
System.Reflection.Assembly.InternalLoad에서(AssemblyName assemblyRef, 증거 assemblySecurity, StackCrawlMark& stackMark, 부울 forIntrospection)
System.Reflection.Assembly.InternalLoad에서(AssemblyString 문자열, 증거 assemblySecurity, StackCrawlMark& stackMark, 부울 forIntrospection)
System.Reflection.Assembly.Load에(AssemblyString 문자열)
Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject에서()
WRN: 어셈블리 바인딩 로깅 설정 OFF.
어셈블리 바인딩 오류 로깅을 사용 하려면, 레지스트리 값 설정 [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) 받는 사람 1.
참고: 어셈블리 바인딩 오류 로깅와 관련 된 몇 가지 성능 저하.
이 기능을 해제 하려면, 레지스트리 값을 제거 [HKLMSoftwareMicrosoftFusion!EnableLog].
의도적으로 그 오류가 발생 하는 방법을 알으십시오: GAC에 어셈블리를 설치 하지 마십시오. 하지만, GAC에. 나 일반적으로 c로 드래그 하 여 GAC에 어셈블리 설치:\windows 탐색기를 사용 하 여 windowsassembly 폴더. 결코 느꼈습니다. 100% 때문에 항상 그 gacutil 존재 이유로 생각 하 고 편안 하 게 … 그래서 나는. 그것은 차이가 없습니다..
인터넷을 검색 하 고이 게시물을 발견: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
포스터 코드의 동일한 루트 비트를 사용 하는 일이 (이 목록에서 내부 WSS 책에서) 그래서 그건 희망 기호. 그러나, 사용 하 여 어셈블리를 꾸미기의 제안 된 [어셈블리: ] 지시어는 나에 게 이해를 하지 않았다. 어쨌든 그것을 시도 하 고 내가 옳 았 어. 그것은 차이가 없습니다..
그럼 난 내 클래스 정의 공개 되지 않았음을 발견. 난 그것을 공개 하 고 그 차이 만든.
다음, "어셈블리 바인딩 오류 로그를 사용 하는 문제에 갔다" (유용 하 고 정확한 지침에 따라 제공) 그리고이 것 흥미로운 얻을 시작. 해당 로그에 보여줍니다 런타임에서 어셈블리에 대 한 해당 서버에 어디에 나 찾기는. 그것은 심지어 내 의학 캐비닛에 그것을 위해 검색 될 것 같습니다.. 하지만 … GAC에 대 한 검색 하지 않습니다..
난 내 겨울 자 켓에 넣어 하 고 다시 인터넷 검색가 누군가가 있다고이 문제 너무 찾을. 그 게시에 긴 토론 아무것도 떨어져 피터 스와 나는 해결책을 찾을 수 없습니다..
로그 검색은 하 고 좀 더 진전을 주장 하는 장소 중 하나로 어셈블리를 이동. 기능을 활성화 하려고 할 때 브라우저에서 새로운 오류 보상 오전:
개체를 만드는 기능 수신기 어셈블리 "xyzzyFeatureReceiver_0"에서 실패, "Conchango.xyzzyFeatureReceiver 입력" 기능 b2cb42e3-4f0a-4380-aaba-1ef9cd526f20에 대 한: System.ArgumentNullException: 값이 null 일 수 없습니다..
매개 변수 이름: 유형
System.Activator.CreateInstance에서(유형 유형, 부울 미공개)
System.Activator.CreateInstance에서(유형 유형)
Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject에서()
인터넷에 1 개의 마지막 여행 위한 시간이!
이번이에 나는 알아, 예상 대로 충분히, 그 모스는 어셈블리는 GAC에 되지 않습니다 때문에이 오류 문제.
뭔가 긍정적이 고 조금 내가 만든 자랑 스럽게 생각 하 고는 MSIL 어셈블리의도 망자, 하지만 그것은 작동 하지 않습니다.. 난 그냥 평범한 화가. 나 자신도 "닭 또는 계란 말입니다." 내 숨 결 ' 아래의.
나는 마지막으로 펀트 결정. 난 완전히 새로운 프로젝트를 만들고이 새로운 프로젝트를 통해 incredible-cloaked-from-the-GAC-assembly 비 작업 프로젝트에서 코드를 복사/붙여넣기. ("어셈블리는 GAC에 설치 하는 경우 바인딩에서 숨기기 같은 것 이라고 빌드 플래그에 대 한 보고" 하지만 하나를 찾을 수 없습니다).
기능을 설치 하 고 그것을 활성화 하 고 … 그것은 작동! 그래서, 그 후, 기본적으로 했다 '를 재 부 팅’ 내 프로젝트. 이것은 왜 컴퓨터를 미 워 하는 또 다른 이유.
나이에서 유용한 뭔가 배 웠 어 요. 하루 종일 stsadm 명령줄을 사용 하 여 기능을 설치 했다 사용 하 고 있는 "-강제" 버 릇 옵션. 몇 가지 이유, 사용 하지 않은 새로운 프로젝트를 설치 했을 때-force 옵션. 이번에, 실제로 그 랬, 진정으로이 새로운 프로젝트의이 어셈블리는 GAC로 복사 하는 것을 잊지합니다. 결과적으로, "FielNotFoundException를 받은" 오류. 이번에, Stsadm에서 그것을, 아니 웹 브라우저를 통해 기능을 활성화 하 려 할 때. 그래서, -실제로 두 역할을 재생 하는 힘. 기존 기능을 다시 설치 해야 할 수 있습니다.. 그것은 또한 설치 버그 기능 오류를 억제 하 여 런타임에 작동 하지 않을 수 있습니다.. 그것은 아마 어딘가에 도움말에서 많은 하지만 난 결코 그것을 발견.
</끝>
또한, 난 내 2 때 나는 기능 수신기에 Namespace 이름이 hysteric nintendoSIXTYFOURRRR-에서--나쁜-방법 순간의 시간, 추적할 수 있도록 당신이 나 다른 사람이 시작 된 곳.
문제의 루트 sharepoint 데이터베이스에 배포 된 wsp에 속 인 다. 당신의 게시물을 읽을 그리고 그것 않습니다 실제로 문제를 해결 하는 동안 우리는 여러 프로젝트와 거 대 한 솔루션 및 수십 그래서 모든 것을 이동 하는 파일의 옵션이 아니었다.
아무리 당신이 당신의 GAC 또는 어셈블리 업데이트, 무엇이 당신에 게 문제는 sharepoint에 설치 된 현재 WSP에 어셈블리.
당신이 수 있습니다 쉽게 것으로 나타났습니다만 해결책을 철회 하려고 (즉, 오류 발생). "늘이기 시간에 일어나는 모든" "배포 wsp" 고려해 야 합니다-뿐만 아니라 프로젝트 자체.
내 문제를 해결이 했다:
– 중앙 관리: 솔루션 취소
– stsadm: deletesolution
– Visual Studio => 프로젝트 => 패키지
– stsadm: addsolution-ProjectbinDebugProject.wsp 파일
– stsadm: deploysolution-이름 project.wsp-즉시 allowgacdeployment-강제로
– Visual Studio => 배포
나 또한 다시 배포를 실행 하기 전에 프로젝트에서 빈 및 디버그 폴더 삭제, 어떤 효과 가질 수 있지만 코멘트 가치가.
이 두 작품
"기능 … 때문에 설치할 수 없습니다 이벤트 수신기 어셈블리의 로드"
그리고
"어셈블리에서 기능 수신기 개체를 만들지 못했습니다."
감사!
Francisco
그냥 몇이 같은 문제를 해결 하 고 간단 하 게 프로젝트를 다시 보다 더 나은 솔루션을 발견 하는 시간을 보냈다.
알고 보 니 그 어떤 이유로 Visual Studio 64 또는 MSIL x 대신 x 86 빌드 대상을 설정 했다 – 어셈블리는 GAC에, 그냥 같은 GAC를 64 비트 SharePoint에서 찾고 있 었.