1

このアプリケーションは、.NET3.5上のWinFormsを使用して構築されています

これは特にWindowsXPでテストされましたが、OSに関連しているかどうかはわかりません。

.NET 4のみを搭載したマシンで実行すると、バージョン3.5の.NETアセンブリが見つからないと言ってクラッシュします。

なぜこれが自動的に起こらないのか疑問に思います。たとえば、一部のサードパーティライブラリは、アプリケーションが古いバージョンに対してコンパイルされている場合でも、新しいバージョンがインストールされるとそれが使用されるという、ある種のポリシーをインストールします。

更新:正確なエラーメッセージは次のとおりです。

「このアプリケーションを実行するためのランタイムのバージョンが見つかりません」。

私の質問は次のとおりです。

  1. なぜこれが.NETFrameworkと同じではないのですか?
  2. 解決策は、構成ファイルに要素を追加することですか?他の解決策はありますか?
4

3 に答える 3

3

一般に、そうではないはずです。

http://msdn.microsoft.com/en-us/library/ff602939.aspx

下位互換性とは、特定のバージョンのプラットフォーム用に開発されたアプリケーションが、そのプラットフォームのそれ以降のバージョンで実行されることを意味します。.NET Frameworkは、下位互換性を最大化しようとします。.NETFrameworkの1つのバージョン用に記述されたソースコードは、.NET Frameworkの新しいバージョンでコンパイルする必要があり、.NETFrameworkの1つのバージョンで実行されるバイナリはそれ以降のバージョンでも同じように動作する必要があります。 .NETFrameworkの

..。

.NET Framework 4は、.NET Frameworkバージョン1.1、2.0、3.0、および3.5で構築されたアプリケーションと下位互換性があります。つまり、以前のバージョンの.NETFrameworkで構築されたアプリケーションとコンポーネントは.NETFramework4で動作します。

提案:

1)これらのリンクを読んでください:

2)最小限の.Net3.5Winformsアプリで問題を再現できるかどうかを確認します

3)正確なエラーメッセージと関連するコード(スタンドアロンアプリなど)をカットアンドペーストします

4)他のすべてに失敗した場合は<startup useLegacyV2RuntimeActivationPolicy="true" >、CLRスタートアップ構成に追加することを検討してください。これは一時的な回避策以外にはお勧めしません。

于 2012-05-17T05:51:58.540 に答える
1

.NET4.0は新しいCLRを導入します。したがって、基本的に4.0を使用しても、3.5アプリの実行にはあまり役立ちません。 すでにここで言及されています

于 2012-05-17T05:59:26.243 に答える
1

コンピューターに.NET3.5がインストールされていない場合、アプリで起動するCLRはありません。互換性の問題が発生する可能性があるため、.NET4.0はアプリに自動的に使用されません。まず、アプリが.NET 4.0で実行されることをテストしてから、このセクションをapp.configに追加して、.NET4.0が存在する場合は実行するようにCLRに指示します。

<configuration>
   <startup>
      <supportedRuntime version="v4.0.30319"/>
   </startup>
</configuration>

.NET 4がフォールバックとして存在しない場合、アプリケーションがコンパイルされたCLRバージョンがフォールバックとして使用されます。すべてが失敗すると、「このアプリケーションを実行するためのランタイムのバージョンが見つかりません」というメッセージが表示されます。

于 2012-05-17T08:29:58.050 に答える