vs11ベータをVS2012 RCにアップグレードした後のapp.configのサポートされているランタイムv4.0

StackOverflow https://stackoverflow.com//questions/11710195

質問

VS11ベータ版からVS2012 RCへのアップグレード後 - .NET 4.0から.NET 4.5をターゲットに変更しました。私はapp.configに気付いています次のセクション

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

上記は何ですか?

新しいプロジェクトを作成しようとしたとき(既存のプロジェクトのアップグレードではない)VS2012 RCでは、app.config

の上記のセクションが表示されません

役に立ちましたか?

解決

それは永遠の.NETのバージョン管理Quagmireの副作用です。 .NET 4.5は.NET Frameworkの並列バージョンではありません.NET 4.0のインストールを完全に置き換えます。 3.0と3.5のように.NET 2.0のインストールを置き換えました。

3.0および3.5の更新はかなり軽度で、フレームワークはたくさんの新しいアセンブリを取得するだけでした。 CLRとコアベースクラスのアセンブリは変わりませんでした。

4.5バージョンのフレームワークに含まれているclr.dllファイルでは、4.0.30319バージョン番号があります。 4.0バージョンのCLRのバージョン番号。 .NET 4.0フレームワークをターゲットにする.NETアプリを実行するトラブルはありません。

そのフレームワーク版は内部的に大きく修正されました。管理された言語でWindows 8上で実行されるメトロアプリを作成できるようにする言語予測を取得しました。重い変更には、1つのアセンブリから別のアセンブリへのクラスの移動が含まれているため、電話でデプロイまたはスレートが適度になることができます。プロジェクトに追加されたApp.exe.configファイルは、ユーザーがその必要なバージョンを持っていることを確認します。 .configファイルをデプロイすることはオプションですが、ユーザーは.NET 4.0がインストールされている場合、ユーザーはかなり不透明な例外メッセージを表示します。それがどのような見えるか確かに確信していません。 4.5がおそらく機能しないときに引き起こされる自動インストール。

他のヒント

ハンスパッシャーがすべてのもので正しいですが、彼はこの責任でPEヘッダーの役割であるキーポイントを見逃していると言っています。

DotNet 4.5はDotNet 4.0の上にあるインプレースインストールであり、Dotnetのバージョン番号を更新しないため、Dotnet 4.5を使用して構築されたバイナリのバイナリの古いDotnet 4.0のバージョン番号があることです。 PEヘッダー(4.0.30319)

CLRはPEヘッダーのこの値を使用して、どのバージョンをロードするかを判断し、DotNet 4.5に対して構築されたアセンブリに対して変更されないため、CLRがあることがあるため、 PEヘッダーの4.0.30319のアセンブリがDotnet 4.0または4.5にリンクする必要があるかどうかを知る方法はありません。

これは、この追加情報をCLRに提供するapp.configのsupporterruntime要素の存在です。そのため、Dotnet 4.0のみがインストールされているシステムにSupportNetime 4.5アプリケーションを起動した場合、CLRは、必要なバージョンのDotnetがインストールされていないことを知らせる役に立つメッセージを表示します。 なしで同じDotnet 4.5アプリケーションを起動した場合、Dotnet 4.0のみがインストールされているシステム上のSupondowsRuntimeエントリは、アプリケーションが実行を開始することがありますが、後でDotnet 4.5を使用しようとするとクラッシュすることがあります。機能

VS2012 RCとターゲット化DotNet 4.5を使用して構築されたプロジェクトがサポートされていない可能性がある場合は、VS2012 RTMを使用して構築されたプロジェクトにエントリがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top