我有一个旧网站(asp.net 2.0),它很快就在服务器上的IIS7上运行。
我想对代码进行更改,因此我已将所有源代码和相应的二进制文件复制到我的桌面(运行VS 2012)。
但是,无论我使用的是IIS还是内置的网络服务器,我都会收到以下错误;
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'.
这个相同的代码在运行VS 2005的旧版PC上工作正常。我假设这是.net框架,iis中的app池设置为as asp.net 2 classic,但程序集是在框架的第4版下生成。
我尝试删除临时的asp.net文件,但我仍然遇到同样的问题。
它在项目中反对的每个类只有一个实例。那么如何修复它以便在VS 2012中运行,但仍然使用.net 2.0?
答案 0 :(得分:2)
也许这是动态编译的问题。默认情况下,web.config中“compilation”元素的“batch”属性为true。像这样:
<compilation defaultLanguage="c#" debug="false" batch="true" targetFramework="4.0" />
对于batch =“true”,只要必须在目录中编译控件,服务器就会在其目录中编译所有控件(所有内容?)。
这可能会导致您网站中不同位置引用的元素发生冲突。
您应该尝试设置batch =“false”并删除临时文件。 如果您仍然遇到问题,请尝试在相应的ascx / cs文件上进行虚拟编辑和保存。
希望这会有所帮助