我相信你可以预先编译一个asp.net mvc应用程序,但是aspx文件存在一些问题。 说视图文件夹需要复制到部署位置是否正确? 如果是这样,有谁知道为什么? 感谢
答案 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}创建一个文件夹,其中包含所有必需的部署文件,可以根据需要从那里打包。