【问题标题】:Deployment Project dlls cause 'type x exists in both' errors部署项目 dll 导致“类型 x 存在于两者中”错误
【发布时间】:2008-12-09 18:17:34
【问题描述】:

我有一个用于 Web 应用程序的 WebApplication 项目、一个业务逻辑项目和一个 WebDeployment 项目。

当我构建解决方案时,部署“发布”bin 包含每个项目的 1 个 dll - 所以我为 MyWeb.dll、MyWebBusiness.dll 和 MyWebDeploy.dll 获得一个。

当我尝试运行该站点时,它在 MyWeb.dll 和 MyWebDeploy.dll 中看到相同的类型,并且阻塞。

错误信息: CS0433:“AV”类型存在于“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\53d45622\6c032bd2\assembly\dl3\33f3c6b2\abc9430a_285ac901\MyWeb.DLL”中和 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\53d45622\6c032bd2\assembly\dl3\631e5302\0231160d_285ac901\MyWebDeploy.DLL'

【问题讨论】:

    标签: asp.net web-deployment-project


    【解决方案1】:

    我能想到的一些原因:

    • 您的项目中有一个 App_Code 目录
    • 您在某些页面标记中有一个 CodeFile 页面指令,而不是 CodeBehind

    【讨论】:

    • 您的“CodeFile”预感是正确的 - 我们已经从 VS 2005 项目转换了一些具有 CodeFile 而不是 CodeBehind 的母版页。替换后,它不再生成部署 dll。谢谢!
    • 谢谢!意外的 CodeFile 属性。
    • 基本上只是使用右键单击项目时出现在上下文菜单中的项目将它抱怨的文件转换为“Web应用程序”。
    【解决方案2】:

    有一个很棒的论坛帖子:http://forums.asp.net/t/980517.aspx

    似乎只需要 Web 应用程序项目中正确的代码,VS 说“哦,这是一个网站项目,所以我最好自动编译它”,然后当它发现它已经也被编译为单个 DLL。

    上面 Darin 列出的原因是罪魁祸首。

    请注意,意外地有两个对同一个程序集的引用、在 web.config 程序集部分中的双重引用或意外地将代码文件的重复副本放入项目中的文件夹中,都可能出现类似的错误,但是如果您在 web.config 中打开了调试,这些通常会非常明显,并且错误消息应该提到 Web App 程序集 {WebAppName}.dll 和自动编译的程序集 App_Web_{number}.dll 以外的程序集

    有很多人说(在引用的线程中)事件处理程序导致了问题,但我认为只是代码中存在一些奇怪的东西,被解释为需要自动编译。 我在同一条船上,我已经将一大堆示例代码剪切并粘贴到我的 Web 应用程序中,并检查了以上所有内容。但是,许多页面背后的代码已经包含“Web 表单设计器生成”代码,因此当我在解决方案资源管理器上右键单击应用程序并选择“转换为 Web 应用程序”时,什么也没有发生。 旧代码保留在那里,双重编译继续进行。

    所以除了这些帖子之外,我还要说: 如果代码被剪切和粘贴并且转换器不喜欢某些东西,它不会转换它,并且将继续双重编译。唯一的解决方案是将有问题的页面添加为新项目,复制标记和代码(必要时一点一点),然后删除旧版本。

    在我的例子中,我只是去了一个项目的网站,因为我不能被打扰,而且它只是一个演示项目。

    【讨论】:

      【解决方案3】:

      我将我的项目从网站转换为 Web 应用程序,并且在所有页面中都有 CodeFile 而不是 CodeBehind,即使我使用了 VS“转换为 WebApp”选项。手动用 CodeBehind 替换 Codefile 确实解决了我的问题。添加了这个,以便它可以帮助任何其他人转换为 webapp。

      【讨论】:

        【解决方案4】:

        在 web.config 文件中添加 batch="false"

        为您的文件提供主要用于母版页的修复名称

        <compilation ... batch="false"/>
        
          ...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-17
          • 1970-01-01
          • 2011-02-26
          • 2014-08-05
          • 1970-01-01
          • 1970-01-01
          • 2020-02-14
          • 1970-01-01
          相关资源
          最近更新 更多