web-dev-qa-db-ja.com

「このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによってビルドされ、ロードできません。」

「このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによってビルドされているため、ロードできません。」というエラーが表示されます。

.NET 2.0プロジェクトによって呼び出されている.NET 4.0 dllプロジェクトがあります。フレームワークの違いを調整する方法はありますか?

50
Nick Myers

.NET 2.0プロジェクトによって呼び出されている.NET 4.0 dllプロジェクトがあります。フレームワークの違いを調整する方法はありますか?

そうではありません.NET 4 CLRは.NET 2アセンブリをロードできます(通常-混合モードアセンブリ、IIRCにはいくつかの例外があります)が、逆はできません。

.NET 2プロジェクトを.NET 4にアップグレードするか、.NET 4プロジェクトを.NET 3.5(またはそれ以前)にダウングレードする必要があります。

46
Jon Skeet

このページで他のすべての論理ソリューションをすでに試している場合は、これを再確認してください。 app.configには、古いフレームワークへの参照がありました。

<startup>
  <supportedRuntime version="v2.0.50727"/>
</startup>

になるはずだった

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

プロジェクトタブにはv4.0が正しく表示されていましたが、app.configはその変更に伴いリポジトリにコミットされませんでした。それを修正するために、フレームワークを別のものに変更し、再び4.0に戻し、app.configファイルを更新しました。

8
user2209195

同じエラーメッセージが表示されました。私は与えていた

C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "C:\ MyService\MyService.exe"

の代わりに

C:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\ MyService\MyService.exe"

8
Ziggler

プロセスにロードできるランタイムのバージョンは1つだけなので(他の人が示唆しているように、後方ローディング-4.0ローディング2.0-大丈夫です)、いくつかのオプションがあります:

  • .Net 2.0プロジェクトをアップグレードする
  • .Net 2.0プロジェクトをラップします(ソースがあなたのものでない場合)
  • .Net 4.0プロジェクトのダウングレード
  • .Net 4.0プロジェクトを独自のプロセスに読み込みます(これはうまくいくと思いますが、少し手間がかかります、IMO)
5
IAbstract

.NET 2プロジェクトを.NET 4にアップグレードするか、.NET 4プロジェクトを.NET 3.5(またはそれ以前)にダウングレードする必要があります。

.netバージョンはどのようにアップグレードしますか?どこで何を指定すればよいかわかりません。助けてください。

編集:自分で答えを見つけました。プロジェクトを選択し、右クリックして[プロパティページ]を選択します。そこで、フレームワークのバージョンを選択できます。またはプロジェクトを選択して、Shift + F4をクリックします

5
Aditya Bajaj

興味深いことに、私はそのエラーを繰り返しました。私にとってそれを修正したのは、gacutil.exeと同じディレクトリにgacutil.exe.configという設定を作成することでした。構成コンテンツ(テキストファイル)は次のとおりです。

<?xml version ="1.0"?> <configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/>
    </startup> </configuration>

これを参考のためにここに投稿し、実際に何が起こっているのかを誰かが知っているかどうか尋ねます。これが「適切な」方法であると主張していない

3
Prof

INSTALL_UTIL_HOMEディレクトリを"C:\ WINDOWS\Microsoft.NET\Framework\v2.0"から"C:\ WINDOWS\Microsoft.NET\Framework\v4.0.30319 "サービスのインストール用。このエラーは主にバージョンの不一致で発生します。

2

私もこのエラーを受け取りましたが、問題は古いバージョンのGACUTIL.EXEを使用していたことです。

最新の.NETバージョンの正しいGACUTILをインストールすると、正常に機能しました。

このエラーは誤解を招くものです。なぜなら、間違ったものを登録しようとしているDLLのように見えるからです。

2
ObeOne

このエラーは、IISでデフォルトとして間違った.NETフレームワークバージョンが選択されていることによってもトリガーされる場合があります。

接続ビュー(左側)の下のルートノードをクリックし、アクションビューから。NET Frameworkバージョンの変更を選択します(右側)で、ドロップダウンリストから適切な.NETバージョンを選択します。

1
Steven Wolfe

Dllの.netバージョンが一致しないため、app.configまたはweb.configでからに変更してみてください。一般に、より低いフレームワークよりも高いフレームワークがあります。システムのdllを下位バージョンのビルドされた.netアプリケーションに追加すると動作しないため、上位バージョンに変更するだけです。

0
abdul basit

このエラーは、IISでアプリケーションプールを構成した方法が原因でした。

私のWebサービスは、v2.0.50727用に構成されたアプリケーションツールを使用しています。その結果、エラーメッセージが表示されました。

V4.0.30319に変更しても、エラーは発生しませんでした。

0
YbK

特定のプロジェクトがホストされているアプリケーションプールの.Net frame workバージョンを変更すると、この特定の問題を解決できました。

アプリプール->詳細設定-> .Netフレームワークバージョン(v2.0からv4.0に変更)

0
NidhinSPradeep