14

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

因此,最好以紧凑的形式部署所有文件,而无需在源和目标之间进行大量比较。Web 部署项目有一个很好的特性:将所有的 aspx 和 ascx 文件编译成一个(附加的)程序集。

我不知何故发现了如何摆脱服务器上的 aspx 占位符文件,现在我想知道是否有(可能是自制的)方法来摆脱这些.compiled文件

来自Rick Strahl 的博客

.Compiled 文件是网站中每个页面和控件的标记文件,并标识在程序集中使用的类。这些文件不是可选的,因为它们将 ASPX 页面映射到预编译程序集中的适当预编译类。如果您删除 .Compiled 文件,它所映射的页面将无法执行,并且您会遇到严重的执行错误。

有没有人有创意,可能使用模块/处理程序来拦截对.compiledbin 文件夹中文件的检查?

4

8 回答 8

4

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

  1. 保留 .compiled 文件
  2. 不要预编译和部署源代码
  3. 将其转换为 Web 应用程序而不是网站并编译为程序集

我自己也遇到过同样的问题。实际上,在大多数情况下,在处理网站部署时,我会选择 #1,但在极少数情况下,当我知道我将不得不长时间维护网站时,我会花时间将其升级到 Web应用。

于 2009-01-31T01:30:49.960 回答
2

我也不喜欢 .compiled 文件,但如果它们在那里,没有人会受到伤害。那么为什么要打扰呢?

于 2009-05-12T16:36:27.673 回答
1

您可能想看看ASP.NET 中的虚拟路径提供程序KB 如何在此处)。

这个建议的功劳必须归功于 Cheeso和他自己回答的问题:

我可以使用 ASP.NET 获得“WAR 文件”类型的部署吗?

于 2009-05-13T10:30:08.543 回答
0

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

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

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

于 2009-01-27T11:43:18.250 回答
0

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

于 2009-05-10T17:16:23.243 回答
0

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

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

于 2010-01-26T21:10:46.103 回答
0

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

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

就是这样。

于 2009-05-08T21:04:31.237 回答
0

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

于 2011-07-27T07:31:58.833 回答