2017-02-06 7 views
-1

.NET 3.5がインストールされたアプリケーションを作成しました。 WPFはIEブラウザで動作の変更を行います。これはマシンから.NET 4を削除してもなお問題が発生しますが、まだ.net 3.5バージョンが存在し、問題は解決されています。どうすれば私のマシンに.NET 4以降がインストールされ、.net3.5がインストールされたときと同じように強制的にアプリケーションを動かすことができます。 私は私のアプリの設定にこのセクションを追加して、それがマシン3.5で4.0.3がインストールされたアプリケーションを実行しています.net 3.5と4.0の両方がインストールされています

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

私の問題を解決していない私は、にもかかわらず、実行時にブラウザpresentationhost負荷.net4アセンブリで実行されている、.net3.5と私のアプリを構築していることがわかりました。私は理由を知らないし、それを.net3.5アセンブリをロードする方法を知っている。アプリケーションマニフェストで

依存セクションは

 <dependency> 
        <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true"> 
        <assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="2.0.50727.0" /> 
        </dependentAssembly> 
      </dependency> 

ですが、クライアントシステムがインストール.net4アセンブリを持っている場合、.net4 assempliesは、実行時にロードされます!

+0

下位バージョンのフレームワークは、上位バージョンのフレームワークでは機能しません。 –

+0

@parvezalamkhanマニフェストファイルを手動で変更しました。私のアプリケーションは、より高いバージョンの.netフレームワークをインストールしたクライアントマシンで.net3.5を使用しました。 – Rahfa

答えて

0

私は問題を解決するのに役立つ体はありませんでしたか?

私たちのクライアントマシンでは、.net3.5と4の両方がインストールされており、マシン上の他のアプリケーションが.net4を必要とするため、.net4がインストールされている必要があります。問題は、.net3.5でコンパイルされたアプリケーションです。 clickonceで展開すると、.net3.5をターゲットにする必要はありません.net 4!

限り、私はIEでホストされているClickOnceの展開XBAPのアプリを知っているようにホストするpresentationHost.exeを使用してpresentationHostは、.NETの右の組み立てバージョンをロードpresentationHostがclr4ライブラリをロードし、なぜ私は私のアプリをコンパイルしている間、私は知りません.net3.5と明示的に私はすべての設定ファイルとマニフェストで私のアプリケーションがclr2に依存していることを述べました!

次の設定は、私のアプリのデスクトップ版ではうまく機能:.net4(上位バージョン)があまりにもインストールされているものの

<startup useLegacyV2RuntimeActivationPolicy="true"> 
<supportedRuntime version="2.0.50727"/> 
</startup> 

とデスクトップアプリケーションの負荷が正しくライブラリを.net3.5。ブラウザをホストしているクライアントでは、この設定の設定やその他の設定をマニフェストファイルに追加しても、クライアントが.NET Frameworkの上位バージョンをロードするのを妨げず、.net4アセンブリはアプリケーションドメインにロードされます。 5つのライブラリが4つ以上のバージョンではなく読み込まれます!

関連する問題