为什么.NET框架与自己生成的文件冲突?

问题描述 投票:0回答:2

我多次遇到错误,我需要一些指导来永远解决它:

编译错误

Description: An error occurred during the compilation of a

服务此请求所需的资源。请查看以下内容 具体错误详细信息并适当修改您的源代码。

Compiler Error Message: CS0433: The type

'ASP.controls_sites_linkbox_ascx' 存在于两者中 'd:\Windows\Microsoft.NET\Framework 4.0.30319\Temporary ASP.NET 文件\marja\8d9a6443\9cb45dad\App_Web_1hpsmwqz.dll'和 'd:\Windows\Microsoft.NET\Framework 4.0.30319\Temporary ASP.NET 文件\marja\8d9a6443\9cb45dad\App_Web_4lhnbswq.dll'

关闭 Visual Studio 后问题就会解决。但这是不正常的。我们在服务器上发布应用程序不是很危险吗?会不会一次又一次出现?

c# .net asp.net .net-4.0
2个回答
1
投票

如果您不想遇到此问题,请尽可能避免“网站”项目 - 并支持“Web 应用程序”。

实际上,“网站”项目只是一个常规的 Web 应用程序,有一个关键的区别。您的程序集的名称是自动生成的(在您的情况下为 App_Web_1hpsmwqz.dll ),而不是为您的应用程序指定一个命名的 .dll (例如 Something.Web.dll )。

现在,您的问题源于这样的事实:这种情况已经发生了几次,并且您有一个旧的自动生成的文件在运行 - 该文件仍然在您应用程序的 dll 搜索路径中。因此编译器最终会找到两个具有完全相同的命名空间的类。它不知道该选哪个。

您可以按照Ankur的建议,删除临时文件。从长远来看,我会考虑将其变成一个合适的网络应用程序。

我做了一个,而且正是一个“网站”。我多次遇到这个问题,并决心不再这样做。移回 Web 应用程序并且(显然)再也没有出现过问题。


0
投票
  • 转到“D:\Windows\Microsoft.NET\Framework 4.0.30319\Temporary ASP.NET Files”
  • 删除所有文件。
  • 然后尝试重建项目。
© www.soinside.com 2019 - 2024. All rights reserved.