2

サーバー上のIIS7で正常に実行されている古いWebサイト(asp.net 2.0)があります。

コードを変更したいので、すべてのソースコードと適切なバイナリをデスクトップにコピーしました(VS 2012を実行)。

ただし、IISを使用している場合でも、組み込みのWebサーバーを使用している場合でも、次のエラーが発生します。

The type 'foo' in 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\livesite\169c38ce\cc32b84b\App_Web_qbel5zk4.28.cs' conflicts with the imported type 'foo' in 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\livesite\169c38ce\cc32b84b\App_Web_m030ztdd.dll'. Using the one in 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\livesite\169c38ce\cc32b84b\App_Web_qbel5zk4.28.cs'.

これと同じコードは、VS2005を実行している古いXPPCで正常に機能しました。これは.netフレームワークによるものであり、iisのアプリプールはasp.net 2クラシックとして実行するように設定されていますが、アセンブリはフレームワークのv4。

一時的なasp.netファイルを削除しようとしましたが、それでも同じ問題が発生します。

プロジェクトで反対している各クラスのインスタンスは1つだけです。では、これをVS 2012で機能するように修正するにはどうすればよいですか?それでも.net 2.0を使用しますか?

4

1 に答える 1

2

多分それは動的コンパイルの問題です。デフォルトでは、web.configの「compilation」要素の「batch」属性はtrueです。このようなもの :

<compilation defaultLanguage="c#" debug="false" batch="true" targetFramework="4.0" />

batch = "true"を使用すると、コントロールをディレクトリにコンパイルする必要がある場合は常に、サーバーはそのディレクトリ内のすべてのコントロール(すべて?)をコンパイルします。

これにより、サイト内のさまざまな場所から参照されている要素の競合が発生する可能性があります。

batch = "false"を設定し、一時ファイルを削除してみてください。それでも問題が発生する場合は、対応するascx/csファイルに対してダミーの編集と保存を試してください。

これがお役に立てば幸いです

于 2012-11-08T16:50:25.517 に答える