2

我有一个旧网站(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 的旧 XP PC 上运行良好。我假设这取决于 .net 框架,iis 中的应用程序池设置为作为 asp.net 2 经典运行,但程序集是在下生成的v4 框架。

我尝试删除临时 asp.net 文件,但仍然遇到同样的问题。

它在项目中反对的每个类只有一个实例。那么如何修复它以使其在 VS 2012 中有效,但仍使用 .net 2.0 ?

4

1 回答 1

2

也许这是一个动态编译的问题。默认情况下,web.config 中“编译”元素的“批处理”属性为 true。像这样的东西:

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

使用 batch="true",每当必须在目录中编译控件时,服务器都会编译其目录中的所有控件(一切?)。

这可能会导致从您网站的不同位置引用的元素发生冲突。

您应该尝试设置 batch="false" 并删除您的临时文件。如果您仍然遇到问题,请尝试对相应的 ascx/cs 文件进行虚拟编辑和保存。

希望这会有所帮助

于 2012-11-08T16:50:25.517 回答