4

我有一个用于 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'

4

4 回答 4

10

我能想到的一些原因:

  • 您的项目中有一个App_Code目录
  • 您在某些页面标记中有一个CodeFile页面指令,而不是CodeBehind
于 2008-12-09T18:36:41.277 回答
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 应用程序”时,什么也没有发生。旧代码保留在那里,双重编译继续进行。

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

就我而言,我只是去了一个项目的网站,因为我不会被打扰,而且它只是一个演示项目。

于 2010-02-09T07:53:34.430 回答
0

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

于 2012-02-16T21:49:02.847 回答
0

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

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

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

  ...
于 2013-01-06T11:14:02.443 回答