2010-03-24 3 views
2

"C : \ Ora10g \ bin \ Zip.exe"어셈블리에 대한 오류가 발생했습니다. 문제는이 솔루션이 오라클에서 전혀 사용하지 않는다는 것입니다. 프로젝트의 어느 곳에서나 10g에 대한 단일 참조를 찾을 수 없었습니다. 나는 우리 그룹을 떠난 다른 사람으로부터 이것을 상속 받았다. 그는이 문제를 결코 가지지 않았다. 우리 팀의 다른 멤버는 이전에 이걸 가지고 있지만 클라이언트 부분을 다시 설치한다고 말하면서 10g을 고쳤습니다. 그런 행운은 없습니다. WinGrep을 사용하여 "Ora10g"에 대한 전체 솔루션 폴더를 검색해 보았습니다.하지만 거기에 없었습니다."ResolveAssemblyReference"작업이 실패하고 System.BadImageFormatException,하지만 어셈블리가 아무데도 사용되지 않습니다!

아이디어가 있으십니까? 오라클에 대한 잘못된 참조를 제거하는 방법을 알기 전까지는이 솔루션을 구축 할 수 없습니다.

VS 2005 솔루션. 몇 가지 WinForm 앱, 몇 개의 클래스 라이브러리 및 웹 서비스가 포함되어 있습니다. 오류가 주 클래스 라이브러리 프로젝트에서 발생합니다. 당신이 당신의 오라클 클라이언트를 다시 설치

Error 1 The "ResolveAssemblyReference" task failed unexpectedly. 
System.BadImageFormatException: Could not load file or assembly 'C:\Ora10g\bin\Zip.exe' or one of its dependencies. The module was expected to contain an assembly manifest. 
File name: 'C:\Ora10g\bin\Zip.exe' 
    at System.Reflection.AssemblyName.nGetFileInformation(String s) 
    at System.Reflection.AssemblyName.GetAssemblyName(String assemblyFile) 
    at Microsoft.Build.Shared.AssemblyNameExtension.GetAssemblyNameEx(String path) 
    at Microsoft.Build.Tasks.SystemState.GetAssemblyName(String path) 
    at Microsoft.Build.Tasks.Resolver.FileMatchesAssemblyName(AssemblyNameExtension assemblyName, Boolean isPrimaryProjectReference, Boolean wantSpecificVersion, Boolean allowMismatchBetweenFusionNameAndFileName, String pathToCandidateAssembly, ResolutionSearchLocation searchLocation) 
    at Microsoft.Build.Tasks.Resolver.ResolveAsFile(String fullPath, AssemblyNameExtension assemblyName, Boolean isPrimaryProjectReference, Boolean wantSpecificVersion, Boolean allowMismatchBetweenFusionNameAndFileName, ArrayList assembliesConsideredAndRejected) 
    at Microsoft.Build.Tasks.Resolver.ResolveFromDirectory(AssemblyNameExtension assemblyName, Boolean isPrimaryProjectReference, Boolean wantSpecificVersion, String[] executableExtensions, String directory, ArrayList assembliesConsideredAndRejected) 
    at Microsoft.Build.Tasks.AssemblyFoldersResolver.Resolve(AssemblyNameExtension assemblyName, String rawFileNameCandidate, Boolean isPrimaryProjectReference, Boolean wantSpecificVersion, String[] executableExtensions, String hintPath, String assemblyFolderKey, ArrayList assembliesConsideredAndRejected, String& foundPath, Boolean& userRequestedSpecificFile) 
    at Microsoft.Build.Tasks.AssemblyResolution.ResolveReference(IEnumerable`1 jaggedResolvers, AssemblyNameExtension assemblyName, String rawFileNameCandidate, Boolean isPrimaryProjectReference, Boolean wantSpecificVersion, String[] executableExtensions, String hintPath, String assemblyFolderKey, ArrayList assembliesConsideredAndRejected, String& resolvedSearchPath, Boolean& userRequestedSpecificFile) 
    at Microsoft.Build.Tasks.ReferenceTable.ResolveReference(AssemblyNameExtension assemblyName, String rawFileNameCandidate, Reference reference) 
    at Microsoft.Build.Tasks.ReferenceTable.ResolveAssemblyFilenames() 
    at Microsoft.Build.Tasks.ReferenceTable.ComputeClosure() 
    at Microsoft.Build.Tasks.ReferenceTable.ComputeClosure(DependentAssembly[] remappedAssembliesValue, ITaskItem[] referenceAssemblyFiles, ITaskItem[] referenceAssemblyNames, ArrayList exceptions) 
    at Microsoft.Build.Tasks.ResolveAssemblyReference.Execute(FileExists fileExists, DirectoryExists directoryExists, GetDirectories getDirectories, GetAssemblyName getAssemblyName, GetAssemblyMetadata getAssemblyMetadata, GetRegistrySubKeyNames getRegistrySubKeyNames, GetRegistrySubKeyDefaultValue getRegistrySubKeyDefaultValue, GetLastWriteTime getLastWriteTime) 
    at Microsoft.Build.Tasks.ResolveAssemblyReference.Execute() 
    at Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode howToExecuteTask, Hashtable projectItemsAvailableToTask, BuildPropertyGroup projectPropertiesAvailableToTask, Boolean& taskClassWasFound) 

WRN: Assembly binding logging is turned OFF. 
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 
Note: There is some performance penalty associated with assembly bind failure logging. 
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. 

답변

4

"모듈에 어셈블리 매니페스트가 포함될 것으로 예상됩니다."예외와 타입이 System.BadImageFormatException이라는 사실이 알려졌습니다. 이 .NET 어셈블리 인 것처럼하고 다음 중 하나 "\ Ora10g \ 빈 \ Zip.exe을 C": 뭔가 파일을로드하려고

  • 는 .NET 어셈블리
  • 되지 않은입니다. net 어셈블리가 아니라 대상으로하는 CLR 버전보다 나중에 있습니다.
  • .net 어셈블리가 있지만 잘못된 "bitness"(예외 메시지의 "어셈블리 매니페스트"부분에서는 제외)는 아닙니다.

을 손상 가지고 당신 :

  1. 이 파일에 대한 참조를 찾기 위해 텍스트 편집기에서 솔루션 파일 (.sln) 심사?
  2. (가능성 높음) 클래스 라이브러리의 .csproj 파일에이 프로그램에 대한 참조가 있는지 확인하기 위해 검사 했습니까? 빌드 프로세스에서 ZIPped 출력을 생성하기 위해 해당 EXE를로드하려고하는 사용자 지정 MSBuild 태스크가있을 수 있습니다.
  3. 로드하는 어셈블리 중 직접 또는 간접적으로 Zip.exe 파일을 참조하지 않는다는 것을 확인 했습니까?
  4. Dave Van den Eynde said으로, 시스템 .targets 파일 (MSBuild에서하는 일을하는 파일)이 변경되지 않았는지 확인 했습니까?당신은 당신이 시도 할 수 %windir%\Microsoft.NET\Framework\v2.0.50727

다른 일에이 파일을 찾을 수 있습니다

  1. 이 오류 메시지의 지침에 따라 총회가 로그온 바인딩 후 어떤 우편 번호를 볼 수있는 로그를 검토십시오. exe는의 의존성으로로드되었습니다.
  2. "grep"zip.exe에 대한 전체 하드 드라이브가 어딘가 참조하고있어 프로젝트/솔루션 (4 번 참조)에 없을 수도 있지만 오라클 설치 프로그램 클라이언트가 손상되었거나 변경되었습니다.
+1

+1 - 우수 옵션. – Ramesh

+0

@Ramesh, thanks :) "나는 이상한 일을했다"라는 프로젝트 파일과의 전투에서 나 자신이 얼마나 실망 스러울 지 알고 있습니다. 내가 작업하고 있었던 것은 카스퍼 스키 (Kaspersky)가 DEVENV가 바이러스 성 행동을 보이고 즉각 종료하는 것을 의미하는 EXE를 호출하는 것이 었습니다. 그것은 나를 힘들게하려고 노력했다! 나는 MSBuild에 대해 전혀 몰랐다. 이제는 그것에 대해 더 많이 알게되었다고 말할 필요도 없다 .... – Rob

+0

또 다른 팀원은 오라클 재설치를 통해 주위를 둘러 보았다고 말했다. 그건 나를 위해 작동하지 않았다. 오라클 프로젝트 파일에서 참조를 찾을 수 없습니다. 내 생각 엔 무언가가 손상된 것 같습니다. 우리가 어쨌든 계획했던대로 VS2008로 업그레이드했는데 XSD 파일의 이름이 모두 바뀌어도 괜찮은 것처럼 보였습니다. 오류없이 빌드 할 수있었습니다. 프로젝트에 영향을 줄 수있는 업그레이드 프로세스는 어떻게됩니까? – bdwakefield

0

, 당신은 넣어 않은 : 여기

오류 메시지가 무엇입니까? 설치 프로그램에서 기본 위치를 사용한 경우 ORACLE_HOME은 c : \ ora10g에 없습니다. c : \ ora10g \ bin 디렉토리가 있습니까?

가능한 해결 방법은 c : \ ora10g \ bin 디렉토리를 만들고 거기에있는 ORACLE_HOME \ bin 디렉토리에서 zip.exe 파일을 복사하는 것입니다. 분명히 특정 위치에있는 Oracle zip 바이너리를 참조하는 프로젝트에 뭔가가 있습니다 (귀하를 도울 수 없습니다).

+0

디렉토리가 있고 그 안에 파일이 있습니다. 유일한 차이점은 폴더가 bin 폴더가 아니라는 것입니다. 이 파일은이 솔루션에서 전혀 사용하지 않아야합니다 (또는 사용해서는 안됩니다). 어디서나 어떤 참조도 찾을 수 없습니다. 특히 오류가 발생하는 라이브러리가 아닙니다. – bdwakefield

0

이 파일은 참조 된 어셈블리 중 하나에서 참조되어 간접적 인 종속성이 발생할 수 있습니다.

파일이 디렉토리에 있는지 확인하고 파일이 있으면 빌드 서버에도 파일이 있는지 확인하십시오.

+0

파일이 있지만 빌드 서버가 없습니다. – bdwakefield

0

또한 Targets 파일이 변경되지 않았는지 확인하십시오. 이들은 빌드 환경에서 자동으로 임포트됩니다. 아마도 당신도 그들에게 grep을 할 수 있을까요?

특히, 전임자가 모든 프로젝트에 빌드 단계를 포함하도록 수정했을 수 있습니다.

0

응용 프로그램이 실제로 c : \ ora10g 디렉토리에 있습니까? 그렇다면 닷넷은 당신이 실제로 참조했는지 여부와 상관없이 모든 어셈블리를 \ bin 디렉토리에로드하려고 시도합니다.

+0

내 프로젝트 모두가 다른 디렉토리에 있습니다. C : \ Visual Studio 2005 \ Projects. – bdwakefield

관련 문제