PreCompile ASP.net mvc

时间:2009-10-24 15:58:46

标签: asp.net asp.net-mvc

我相信你可以预先编译一个asp.net mvc应用程序,但是aspx文件存在一些问题。 说视图文件夹需要复制到部署位置是否正确? 如果是这样,有谁知道为什么? 感谢

2 个答案:

答案 0 :(得分:2)

我总是使用Web Deployment Projects来预编译Web应用程序并为部署做好准备。 Scott Guthrie对此有blogged

答案 1 :(得分:2)

简短的回答是,ASPX(和ASCX)文件无法编译,在部署到IIS时必须与应用程序一起复制。

您可以预编译ASP.NET MVC应用程序,但ASPX / ASCX文件不会包含在混合中。根据我们的经验,我们无法使用aspnet_compiler.exe将所有内容捆绑成二进制文件,因此我们使用csc(通过nant)编译可编译的所有内容,然后复制其余内容。这包括View文件夹。

如果有帮助,我们的一个nant脚本的相关部分如下:

(假设所有依赖项已经被复制到站点文件夹(在本例中为BuildDir)bin文件夹)

<csc target="library" output="${BuildDir}/bin/${FinalDeployDllName}.dll" >
  <references failonempty="true">
    <include name="${BuildDir}/bin/SomeDependency.dll" />
  </references>
  <sources>
    <include name="${BuildDir}/**/*.cs" />
  </sources>
</csc>

<copy todir="${target}" overwrite="true">
  <fileset basedir="${BuildDir}">
    <include name="**/*.???x" />
    <include name="**/*.js" />
    <include name="**/*.jpg" />
    <include name="**/*.jpeg" />        
    <include name="**/*.gif" />
    <include name="**/*.png" />
    <include name="**/*.html" />
    <include name="**/*.css" />
    <include name="**/*.swf" />
    <include name="**/*.Master" />
    <include name="**/Web.config" />
    <include name="images/**/*" />
    <include name="bin/**/*" />
    <include name="Content/**/*" />
  </fileset>
</copy>

<delete>
  <fileset>
    <include name="${target}/*.build" />
    <include name="${target}/*.scc" />
    <include name="${target}/*.sln" />
    <include name="${target}/*.suo" />
    <include name="${target}/build.*" />
    <include name="${target}/*.resharper" />
    <include name="${target}/*.resharper.user" />
    <include name="${target}/bin/*.xml" />
    <include name="${target}/bin/*.pdb" />
  </fileset>
</delete>

这将在{target}创建一个文件夹,其中包含所有必需的部署文件,可以根据需要从那里打包。