VS2012 / IIS7构建网站引发冲突

时间:2012-11-08 13:45:16

标签: asp.net visual-studio-2012

我有一个旧网站(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?

1 个答案:

答案 0 :(得分:2)

也许这是动态编译的问题。默认情况下,web.config中“compilation”元素的“batch”属性为true。像这样:

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

对于batch =“true”,只要必须在目录中编译控件,服务器就会在其目录中编译所有控件(所有内容?)。

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

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

希望这会有所帮助