一尘不染

错误CS0433“ A.dll和B.dll中都已经存在类型'X'”从何而来?

c#

当我使用内部Web服务器(而非IIS)从Visual Studio 2008 SP1运行Webapp时,收到上述错误。

完整错误(源文件 Default.aspx.cs ):

编译器错误消息:CS0433:类型’WebApplication3.Site1’在两个c:\ Windows \ Microsoft.NET \
Framework \ v2.0.50727 \ Temporary ASP.NET Files \ root \ aa563bcf \
59deedc0 \ App_Web_site1.master.cdcab7d2中均存在。 muczzy9v.dll’和’c:\ Windows \
Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ root \
aa563bcf \ 59deedc0 \ assembly \ dl3 \ 44c3a3cf \ 80dd34ed_6968ca01 \
WebApplication3.DLL’

前面的完整警告:

警告:CS0436:在’c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary
ASP.NET Files \ root \ aa563bcf \ 59deedc0 \
App_Web_default.aspx.cdcab7d2._tlkwdos.0中,类型’WebApplication3._Default’。
cs与’c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET
Files \ root \ aa563bcf \ 59deedc0 \ assembly \ dl3 \ 44c3a3cf \
e096e61c_6568ca01 \
WebApplication3中的导入类型’WebApplication3._Default’发生冲突.DLL”。使用在’c:\ Windows \
Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ root \
aa563bcf \ 59deedc0 \ App_Web_default.aspx.cdcab7d2._tlkwdos.0.cs’中定义的类型。

警告源指向中间文件 App_Web_default.aspx.cdcab7d2._tlkwdos.0.cs

Line 162:    
Line 163:    [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
Line 164:    public class default_aspx : global::WebApplication3._Default, System.Web.IHttpHandler {
Line 165:        
Line 166:        private static bool @__initialized;

我的问题是:这是从哪里来的?

该webapp(不是网站!)具有一个 Default.aspx 和一个 Site1.Master
,没有依赖关系。它们几乎是空的,asp:Label页面上有个。以前,此webapp运行良好。当我删除Default.aspx.cs中对主服务器的任何引用时,一切顺利。母版只有一些代码。

它实际上是许多“一劳永逸”的测试Webapp之一,因此我一点也不在乎。但是我之前从未见过这种情况,现在我很好奇该怎么做,然后我将代码复制到一个新项目中(清理解决方案无济于事)。

注意:我已经阅读了这篇文章和其他一些文章,但它们并不适用。


阅读 235

收藏
2020-05-19

共1个答案

一尘不染

理论

如果此问题 不是 由应用程序中的错误引起的(例如,重复的类名):

在对应用程序的项目进行了更改(导致代码/参考/资源更改)之后,似乎会出现此问题。问题似乎出在此新版本的输出之内:由于各种原因,Visual
Studio不会替换应用程序obj / bin文件夹的 全部 内容。这导致应用程序的bin文件夹中的至少某些内容已过期。

发生上述问题时,单独清除“ Temporary ASP.NET
Files”文件夹并不能解决问题。它不能解决问题,因为下次访问您的应用程序时,应用程序的bin文件夹中的陈旧内容会被复制回到“ Temporary
ASP.NET Files”文件夹中,从而导致问题继续存在。关键是删除所有现有文件并强制Visual
Studio重建每个对象,因此,下次访问您的应用程序时,新的bin文件将被复制到“ Temporary ASP.NET Files”文件夹中。

  1. 关闭Visual Studio
  2. 执行iisreset
  3. 删除“ ASP.NET临时文件”文件夹中的所有文件夹和文件(错误消息中引用了路径)
  4. 删除有问题的应用程序的“ obj”和“ bin”文件夹
  5. 重新启动Visual Studio并打开解决方案
  6. 执行“清理解决方案”,然后执行“重建解决方案”

说明

  • 步骤1-2:从我们需要删除的文件夹/文件中删除资源锁。
  • 步骤3-4:删除所有旧的构建文件
  • 步骤5-6:创建构建文件的新版本
2020-05-19