2

アセンブリ「C:\Ora10g\bin\Zip.exe」に関するエラーが発生しています。問題は、このソリューションが Oracle で何も使用しないことです。プロジェクトのどこにも 10g への参照が 1 つも見つかりませんでした。これは、グループを去った別の人から受け継いだものです。彼はこの問題を抱えたことはありません。私のチームの別のメンバーは、以前にこれを取得したと言いましたが、10g のクライアント部分を再インストールすると修正されました。そのような幸運はありません。WinGrep を使用して、ソリューション フォルダ全体で "Ora10g" を検索しようとしましたが、そこにはありませんでした。

何か案は?この Oracle への誤った参照を取り除く方法がわかるまで、このソリューションを構築することはできません。

VS 2005 ソリューション。いくつかの WinForm アプリ、いくつかのクラス ライブラリ、および Web サービスが含まれています。メイン クラス ライブラリ プロジェクトでエラーが発生します。

エラーメッセージは次のとおりです。

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

5 に答える 5

4

プレゼントは「モジュールにはアセンブリマニフェストが含まれていることが期待されていた」と例外がタイプであるという事実ですSystem.BadImageFormatException。何かがファイル「C:\ Ora10g \ bin \ Zip.exe」を.netアセンブリであるかのようにロードしようとしており、次のいずれかです。

  • .netアセンブリではありません
  • .netアセンブリですが、対象のバージョンより後のバージョンのCLR用です
  • .netアセンブリですが、「ビットネス」が間違っています(例外メッセージの「アセンブリマニフェスト」の部分が指定されている可能性は低いです)。
  • 破損しています

ありますか:

  1. このファイルへの参照を探すために、テキストエディタでソリューションファイル(.sln)を調べましたか?
  2. (より可能性が高い)クラスライブラリの.csprojファイルを調べて、このプログラムへの参照が含まれているかどうかを確認しましたか?そのEXEをロードしようとしているカスタムMSBuildタスクがあり、ビルドプロセスからZIP形式の出力を生成している可能性があります。
  3. ロードするアセンブリのいずれも、直接または間接的にZip.exeファイルを参照していないことを確認しましたか?
  4. Dave Van den Eyndeが言ったように、システムの.targetsファイル(MSBuildにその実行方法を指示するファイル)が変更されていないことを確認しましたか?これらのファイルは次の場所にあります。%windir%\Microsoft.NET\Framework\v2.0.50727

あなたが試すことができる他のこと:

  1. エラーメッセージの指示に従い、アセンブリバインディングログをオンにしてから、ログを確認して、依存関係としてロードされたZip.exeを確認します。
  2. 「zip.exe」のハードドライブ全体を「grep」します。どこかで参照されており、プロジェクト/ソリューションに含まれていない可能性があります(ポイント4を参照)が、Oracleクライアントのインストーラが破損している可能性があります。 /変更されました。
于 2010-03-26T13:07:25.700 に答える
0

このファイルは、参照されているアセンブリの1つによって参照されている可能性があり、間接的な依存関係が発生しています。

ファイルがディレクトリに存在するかどうかを確認し、存在する場合は、ファイルがビルドサーバーにも存在することを確認します。

于 2010-03-26T13:06:05.680 に答える
0

アプリケーションは実際に c:\ora10g ディレクトリにありますか? その場合、.Net は、実際に参照するかどうかに関係なく、\bin ディレクトリ内のすべてのアセンブリをロードしようとします。

于 2010-03-26T13:20:50.740 に答える
0

また、公式のターゲットファイルが変更されていないことを確認してください。これらはビルド環境に自動的にインポートされます。おそらく、それらに対してもgrepを実行できますか?

より具体的には、前任者がそれらを変更して、すべてのプロジェクトに何らかのビルド手順を含めることができた可能性があります。

于 2010-03-26T13:12:41.153 に答える
0

Oracle クライアントを再インストールしたとき、どこに置きましたか? インストーラのデフォルトの場所を使用した場合、ORACLE_HOME は c:\ora10g にはなりません。ディレクトリ c:\ora10g\bin は存在しますか?

可能な回避策は、ディレクトリ c:\ora10g\bin を作成し、そこにある ORACLE_HOME\bin ディレクトリから zip.exe ファイルをコピーすることです。プロジェクトには、その特定の場所にあるOracle zipバイナリを参照するものがあるようです(そこでは役に立ちません)。

于 2010-03-24T15:27:07.157 に答える