3

多くの dll を参照する単一の exe で構成される C# アプリケーションがあり、すべて .NET 2 でビルドされています。すべてが以前と同じように機能することを確認してください。

そこで、exe だけを .NET 4 (フル プロファイル) で再構築し、古い exe をそれに置き換えて、アプリケーションを再起動しました。次のエラーが表示されます。

"Failure loading the types from the assembly 'blorg.dll'"(ここで、「blorg」は、exe によって参照される古い .NET 2 アセンブリの 1 つであるアセンブリの実際の名前のネットセーフ エイリアスです。)

内部例外は次のとおりです。

"Could not load file or assembly file 'file:///C:\\(...)blorg or one of its depedencies. The system cannot find the file specified.":"file:///C:\\(...)blorg"

FusionLog は次のように述べています。

=== Pre-bind state information ===
LOG: User = NT AUTHORITY/SYSTEM
LOG: Where-ref bind. Location= C:\(...)\blorg
LOG: Appbase = file:///C:/(...)/
LOG: Initial PrivatePath = NULL
Calling assembly : (Unknown).
===
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: Using application configuration file: C:\(...)\blorg.exe.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Attempting download of new URL file:///C:/(...)/blorg

問題のdllは、exeと同じフォルダーにあります。.NET 2 用の VS2005 で exe をビルドすると、全体が正常に動作します。唯一の変更は、実行可能ファイルのソリューション (実行可能ファイルには独自のソリューションがあります) を VS2010 に変換し、ターゲットを .NET 4 に変更することでした。 、それを再構築して、フォルダーにコピーして貼り付けます。ああ、それはデバッグ中ですが、残りはリリース中です。しばらくオンラインで検索しましたが、問題の診断に役立つものは見つかりませんでした。何かご意見は?

4

1 に答える 1

1

結局のところ、これらのアセンブリまたはその依存関係の一部は混合モードの .NET 2.0 であったため、修正は app.config に移動し、属性「useLegacyV2RuntimeActivationPolicy」をスタートアップ要素に追加することでした。

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="4.0" sku=".NETFramework,Version=v4.0" />
</startup>
于 2012-07-19T15:38:24.643 に答える