2016-06-28 2 views
1

からXSDを作成Can't。他のライブラリへの外部参照はありません(もちろんmscorlib)。今私は、このコマンドを使用して、そのアセンブリからXSDを作成したい:私はエラーを取得するしかしは私がからスキーマを作成する簡単なプログラムを持っているexeファイル

Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.

xsd pathToAssembly/ConsoleApplication1.exe 

私にこれを与える

通常引き起こされ

Could not load file or assembly 'ConsoleApplication1.exe' or one of its dependencies. An attempt was made to load a program with an incorrect format.

異なるランタイムによって。しかし、私のプロジェクトで.NET 4とXSDツール(明らかに)も使用されているので、私はなぜスキーマを作成できないのか混乱しています。

同じエラーが発生するアセンブリが配置されているディレクトリからXSDを既に呼び出そうとしました。

64ビットWindows 8.1内でVisual Studio 2010のXSDを使用しています。

EDIT:XSDへのパスは、このです:C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Bin/NETFX 4.0 Tools/xsd.exe

+0

エラーメッセージは32/64ビットの問題を指しています。 AnyCPUとは対照的に、64ビットの実行可能ファイルですか? – CodeCaster

+0

いいえ、x86用にコンパイルされます。 – HimBromBeere

+0

https://social.msdn.microsoft.com/Forums/en-US/2a5f085a-eaf5-4c2c-9d1d-ebfcaecc21d6/xsdexe-does-not-work-for-x86-dlls-on-a-windows-x64 -system?forum = xmlandnetfx – CodeCaster

答えて

1

あり32とXsd.exeでは、64ビット版だと、実行されています一つは、あなたのパス変数に依存します。

たとえばWindowsのSDK v7.0Aは、これらのパスにツールを置く:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\xsd.exe 
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\xsd.exe 

あなたがそれらのいずれかを実行すると:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\xsd.exe" "ConsoleApplication1.exe" 

をそれは示すエラーを与えるでしょう。これは、「AnyCPU」に対してアセンブリ(Xsd.exe、ConsoleApplicaiton1.exeではなく)がコンパイルされ、64ビットシステムで64ビットで実行されるためです。これにより、64ビットプロセスが32ビットアセンブリをロードできないため、表示されるエラーが発生します。

これを回避するには、32ビットのXsd.exeをx86にすることもできます。これは、アセンブリの署名が無効になりますが、それはその機能に影響を与えないことを

corflags "Path\To\xsd.exe" /32BITREQ+ /Force 

注:あなたは、管理者特権のコマンドプロンプトから行うことができます。元のXsd.exeではなく、そのコピー上でこれを行うことをお勧めします。

このアセンブリは、常に32ビットプロセスとして実行され、x86アセンブリをうまく読み込むことができます。

+0

しかし、最後の1つの質問: "アセンブリの署名を無効にする"とはどういう意味ですか?鉱山は署名されているので、これはこれに影響しますか? – HimBromBeere

+0

このフラグをXsd.exeに設定すると、問題ではないXsd.exeの署名が無効になります。アセンブリには影響しません。 – CodeCaster

+0

ありがとうございます。 – HimBromBeere

関連する問題