SQL Serverレプリケーションプロジェクトで「不正な形式のプログラムを読み込もうとしました」というエラーが表示される


318

正確なエラーは次のとおりです

ファイルまたはアセンブリ 'Microsoft.SqlServer.Replication、Version = 9.0.242.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91'またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムを読み込もうとしました。

私は最近、2か月間別のプロジェクトに移動した後、このプロジェクトに再び取り組み始めました。以前は完全に機能し、すべての参照を再確認しました。

回答:


405

バルディによって答えは以下の正しいですが、また、あなたのアプリケーションプールで32ビットアプリケーションを有効にする必要があります。

出典:http : //www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load- a-program-with-an-incorrect-format /

ローカルマシン(Vista 64ビットを実行)で実行するようにアプリケーションを設定しているときに、次のエラーが発生しました。

ファイルまたはアセンブリChilkatDotNet2またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムを読み込もうとしました。

明らかに、アプリケーションはChilKatコンポーネントを使用しますが、使用しているバージョンは32ビットバージョンのみのようです。

このエラーを解決するために、32ビットアプリケーションを許可するようにIISでアプリプールを設定しました。IISマネージャーを開き、アプリプールを右クリックして、[詳細設定]を選択します(以下を参照)

ここに画像の説明を入力してください

次に、「32ビットアプリケーションを有効にする」をTrueに設定します。

ここに画像の説明を入力してください

すべて完了!


これにより、アプリケーションプール全体が完全な64ビットではなく32ビットとして実行されますか?64ビット/すべてのプラットフォームの依存関係を再コンパイルする方が良いソリューションでしょうか?NFOPが原因でこの問題が発生していますが、オープンソースであるため、再コンパイルできます。
jamiebarrow 2011年

2
リンクは機能しませんが、あなたの説明は私の問題を解決するのに十分でした。+1
アンドリューシェパード

32ビットアプリケーションを有効にする方法についてのリンク:blogs.msdn.com/b/rakkimk/archive/2007/11/03/...
ブランドンS

15
このAppPoolソリューションはASP.NETアプリケーションにのみ適用されることに注意してください。ASP.NETまたはIISを使用/構成したことがない開発者を混乱させる可能性があります。
galaktor

IIS7.5でのみIIS7で修正されません
FlavorScape

120

解決策を見つけました。最近、マシンをWindows 2008 Server 64ビットにアップグレードしました。SqlServer.Replication名前空間は、32ビットプラットフォーム用に作成されました。もう一度実行するために必要なのは、プロジェクトビルドプロパティのターゲットプラットフォームをX86に設定することだけでした。


DLLでこの問題が発生していますが、[プロジェクト]> [HDPプロパティ...]に[ビルド]タブがありません(一見、すべてではありませんが)。[コンパイル]タブと[デバッグ]タブの両方に[プラットフォーム]ドロップダウンがありますが、どちらの場合もドロップダウンの唯一の項目は[アクティブ(すべてのCPU)]です。
B.クレイシャノン

上記の問題の逆を偶然見つけました。すべてを64ビットで実行していて、ビルドターゲットはAny CPUでした。これを64ビットに変更すると、完全に問題なく動作しました:)
Madhurya Gandi 2017

87

Webプロジェクトのプロパティページのプラットフォームターゲットの値をに変更しますAny CPU

ここに画像の説明を入力してください


残念ながら効果はありません。
ジョナサン

4
私は間違っていました-私のすべての「bin」フォルダを削除した後、これはうまくいきました。ありがとう!
ジョナサン

私の問題も修正しましたが、私のソリューションのすべてのプロジェクトに対してこれを行った後にのみ。上記の手順はC#プロジェクト用です。VB.NETプロジェクトの場合は、[プロジェクトのプロパティ]> [コンパイル]> [高度なコンパイルオプション]> [ターゲットCPU]を「AnyCPU」に変更します
Francois Botha

6
私の場合、プロジェクトはすでに「すべてのCPU」を対象としていました。しかし、私は64ビットWindowsを実行していて、古い学校のハードウェアドライバーをDllImportしようとしていました。特にターゲットをx86に変更すると、修正されました。
bsegraves

私の場合、私はx64で実行したいと思っていました。うまくいかなかった。すべての推奨事項を変更した後、Webでの「ビットネス」もx64に変更する必要がありました
SKCSカマル

52

IIS->アプリケーションプール->詳細設定-> 32ビットアプリケーションを有効にするに移動します。


クレイ、どのIISバージョンを使用していますか?
Harpal 2013年

23

Visual Studioからコードを実行しようとすると、最近問題が発生しました。その場合は、
[ツール]> [オプション]> [プロジェクトとソリューション]> [WEBプロジェクト] を実行し、「64ビットバージョンのIIS ExpressをWebサイトとプロジェクトに使用する」を確認する必要があります。


1
これは、最終的に私のために働いたものです。特に、Service Fabricライブラリを使用してWeb APIをデバッグしようとしている人向けです!!! プロジェクトでService Fabric DLLを使用している場合は、上記のソリューションを使用していることを確認してください。
Chris Dutra、2016

これは私のために働いた唯一の解決策です。ありがとう。:D
Jeremy Styers 2017年

私も働きます!
–CùĐứcHiếu2017

11

ASP.NET MVC 3プロジェクトで、Visual Studio自体の中でこのエラーが発生した場合:

作業中のASP.NET MVC 3アプリで、プロジェクトにMicrosoft.SqlServer.BatchParserへの参照を追加して、展開サーバーで欠落していた問題を解決しようとしました。(私たちのアプリはSMOを使用しています。正しい修正は、SQL Server Native Clientと他のいくつかをデプロイメントサーバーにインストールすることでした。)

BatchParserへの参照を削除した後でも、開いたすべてのASP.NET MVC 3ページで、BatchParser DLLを参照して「試行されました...」エラーが発生し続け、そのエラーの後に何十ものページ解析が続きましたエラー。

これが発生した場合は、ファイル検索を実行して、DLLがプロジェクトの\ binフォルダの1つに残っているかどうかを確認してください。 再構築を行っても、Visual Studioは必ずしもすべての\ binフォルダー内のすべてをクリアするわけではありません。DLLをビンから削除して再ビルドすると、エラーは発生しなくなりました。


再構築を行っただけで、DLLを手動で削除しなくても問題は解決しました。ありがとう!
Trevor

4

IIS Expressに対するWindows 10のMVC5アプリでこれを行いました。私の解決策は次のとおりです:

  • ツール=>
    • オプション=>
      • プロジェクトとソリューション=>
        • Webプロジェクト=>
          • Webサイトおよびプロジェクトに64ビットバージョンのIIS Expressを使用する

3

動作する32ビット(true)に変更します

この長さを取得する場合は、ゼロ未満にすることはできません。パラメーター名:iisサーバーの構成における長さの問題SQLサーバー名やサーバー名などのweb.configファイルの接続文字列を変更し、iisを再起動して、機能するページをロードしてみます。


2

もしVisual Studioの2012年に出版外すerroring試み「公開時にProcompile」を公開ウィザードのオプションを選択します。

「発行中のプリコンパイル」のチェックを外します


0

Windowsフォームアプリケーションでこれを行うには、[プロジェクト]-> [プロパティ]-> [ビルド]-> [32ビットを優先する]チェックボックスを右クリックします。皆さんありがとう


0
  1. ここにある一時テストディレクトリを削除しますC:\ Users(User)\ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. Visual Studioですべてのプロジェクトをx64に設定する

  3. デフォルトのプロセッサアーキテクチャをx64に設定します(Test / TestSettings / Default Processor Architecture)。

ソリューションファイルをクリーンビルドしてください。


0

プロジェクトプロパティのターゲットフレームワークを.NET Framework 4.7.1から4.6.2に変更すると、うまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.