Краткий ответ: файлы ASPX (и ASCX) не компилируются и должны быть скопированы с приложением при развертывании в IIS.
Вы можете предварительно скомпилировать приложение ASP.NET MVC, но файлы ASPX / ASCX не включаются в микс. По нашему опыту, мы не смогли использовать aspnet_compiler.exe для объединения всего в двоичный файл, поэтому мы используем csc (через nant) для компиляции всего, что можно скомпилировать, а затем скопировать остальное. Это включает в себя папку просмотра.
Если это поможет, соответствующая часть одного из наших скриптов nant выглядит следующим образом:
(при условии, что все зависимости уже скопированы в папку bin сайта (в данном случае BuildDir))
<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} со всеми необходимыми файлами для развертывания, которые будут упакованы оттуда по вашему усмотрению.