ASP.NET Web部署项目:删除.compiled文件

时间:2009-01-15 15:39:16

标签: asp.net deployment web-deployment-project

我在Visual Studio 2008中使用 Web部署项目以准备我的 ASP.NET 应用程序(ASP.NET Web应用程序,不< / em> ASP.NET网站)用于复制到多个服务器。我必须通过FTP将文件复制到不同服务器上的本地登台服务器上,有时我必须从客户的服务器上获取它们。

因此,以紧凑的形式部署所有文件并不需要在源和目标之间进行大量比较会很好。 Web部署项目具有以下优点:将所有aspx和ascx文件编译为单个(附加)程序集。

我以某种方式在服务器上发现了how to get rid of aspx placeholder files,现在我想知道是否有一种(可能是自制的)摆脱这些.compiled文件的方式

来自Rick Strahl's blog

  

.Compiled文件是一个标记文件   对于Web中的每个页面和控件   站点并标识使用的类   在组件内部。这些文件   不是可选的,因为它们映射ASPX   页面到适当的预编译   预编译程序集中的类。   如果删除.Compiled文件,则   它映射的页面将无法执行   执行,你得到一个讨厌的执行   错误。

任何有创意的人,可能会使用模块/处理程序拦截bin文件夹中.compiled文件的检查?

8 个答案:

答案 0 :(得分:4)

.compile文件来自部署时的预编译。所以你基本上有3个选择:

  1. 保留.compiled文件
  2. 不要预编译和部署源代码
  3. 将其转换为Web应用程序而不是Web站点并编译为程序集
  4. 我自己遇到了同样的问题。在大多数情况下,我在处理网站部署时实际上选择了#1,但在极少数情况下,当我知道我将需要长时间维护网站时,我会花时间将其升级到Web应用

答案 1 :(得分:2)

我也不喜欢.compiled文件,但如果他们在那里没有人受伤。那么为什么要这么麻烦呢?

答案 2 :(得分:1)

您可能需要查看ASP.NET中的Virtual Path ProvidersKB how to here)。

这个建议的功劳必须转到Cheeso并在这里自己回答问题:

  

Can I get “WAR file” type deployment with ASP.NET?

答案 3 :(得分:0)

我不知道.compiled文件,但您可以设置服务器以使用subversion更新文件,而不是在编译时手动复制文件。

因此,您将使用Web部署项目(而不是单个程序集)编译文件,将它们放入您为此目的创建的存储库中,并在每台服务器上,只需执行svn更新即可自动获取和比较文件

我知道这不是你直接要求的,但它可能是一条探索之路。

答案 4 :(得分:0)

将“排除过滤器”添加到部署项目中:

  1. 在部署项目中。
  2. 右键单击内容文件。
  3. 点击“排除过滤器”。
  4. 添加“* .Compiled”
  5. 点击“确定”。
  6. 就是这样。

答案 5 :(得分:0)

我记得当时我不能使用VWD Express进行Web应用程序,我使用nant脚本将项目编译成单个dll并进行部署,这样可行(所以我也不需要完整的VS来进行dll部署) ,所以如果你真的不想把你的项目搞乱到Web应用程序,也许这也是一个检查的路径。

答案 6 :(得分:0)

您可以使用带有.compiled选项的aspnet_merge工具删除-r个文件。

  

删除主代码程序集的.compiled文件(App_Code文件夹中的代码)。如果应用程序包含对主代码程序集的显式类型引用,请不要使用此选项。

答案 7 :(得分:0)

如果您将代码发布为可更新(在发布设置中),则会生成这些文件。取消选中该值并重新发布。这是我所知道的一个老问题,但这里没有明确定义答案。