部署项目dll导致'类型x存在于两个'错误中

时间:2008-12-09 18:17:35

标签: asp.net web-deployment-project

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

当我构建解决方案时,部署“Release”bin包含每个项目的1个dll - 所以我得到一个用于MyWeb.dll,MyWebBusiness.dll和MyWebDeploy.dll。

当我尝试运行该站点时,它在MyWeb.dll和MyWebDeploy.dll以及chokes中看到相同的类型。

错误讯息: 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'

4 个答案:

答案 0 :(得分:10)

我能想到的一些原因:

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

答案 1 :(得分:0)

有一篇很棒的论坛帖子: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应用程序”时,没有任何反应。 旧代码保留在那里,双重编译继续。

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

在我的情况下,我只是去了一个项目的网站,因为我无法打扰它,无论如何它只是一个演示项目。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

将batch =“false”添加到web.config文件

为您的文件修复名称主要用于主页

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

  ...