2009-10-24 4 views
1

Я считаю, что вы можете предварительно скомпилировать приложение asp.net mvc, но есть некоторые проблемы с файлами aspx. Правильно ли указывать, что папка просмотра должна быть скопирована в развернутое местоположение? Если так кто-нибудь знает, почему? ThanksPreCompile ASP.net mvc

ответ

2

Короткий ответ заключается в том, что файлы ASPX (и ASCX) не скомпилируются и должны быть скопированы с вашим приложением при развертывании в IIS.

Вы можете предварительно скомпилировать приложение ASP.NET MVC, но файлы ASPX/ASCX не включаются в состав. По нашему опыту мы не смогли использовать aspnet_compiler.exe для объединения всего в двоичный файл, поэтому мы используем csc (через nant) для компиляции всего материала, который может быть скомпилирован, а затем скопируйте остальные. Это включает в себя папку «Просмотр».

Если это поможет, то соответствующая часть одного из наших NANT сценариев заключается в следующем:

(Предполагается, что вся зависимость уже скопирована в папке сайта (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} со всеми необходимыми файлами для развертывания, которые будут упакованы оттуда, как вы сочтете нужным.

+0

Спасибо, что подтвердили это Джейсон. – Noel

2

Я всегда использовал Web Deployment Projects, чтобы предварительно скомпилировать веб-приложения и подготовить их к развертыванию. Scott Guthrie имеет blogged об этом.

+0

Я знаю, что прекомпилирует работы для aspx-файлов в проектах веб-развертывания, но я говорю о приложениях asp.net mvc – Noel

+1

Ну, это не что иное, как веб-проекты ASP.NET. –

+0

Спасибо Дарин. Я где-то читал (не могу найти), что файлы aspx в папке просмотра должны быть скопированы как часть развертывания i.e, они не являются частью предварительно скомпилированной dll. Я не могу подтвердить, поскольку IIS не установлен. Это неправильно? – Noel