2009-10-24 130 views
1

我相信你可以預編譯一個asp.net mvc應用程序,但是aspx文件有一些問題。 說視圖文件夾需要複製到部署位置是否正確? 如果有的話,有誰知道爲什麼? 謝謝預編譯ASP.net mvc

回答

2

簡而言之,ASPX(和ASCX)文件不會被編譯,並且在部署到IIS時必須與應用程序一起復制。

您可以預編譯一個ASP.NET MVC應用程序,但ASPX/ASCX文件不包含在組合中。根據我們的經驗,我們無法使用aspnet_compiler.exe將所有內容捆綁到一個二進制文件中,因此我們使用csc(通過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}中創建一個包含所有需要的部署文件的文件夾,並在您認爲合適的情況下從該文件夾打包。

+0

感謝您確認此Jason。 – Noel 2009-10-26 08:26:15

2

我一直使用Web Deployment Projects來預編譯Web應用程序併爲它們做好部署準備。 Scott Guthrie有關於它的blogged

+0

我知道預編譯工作的web部署項目中的aspx文件,但我談論的asp.net mvc應用程序 – Noel 2009-10-24 16:45:23

+1

那麼,他們只不過是ASP.NET Web項目。 – 2009-10-24 17:09:30

+0

謝謝Darin。我讀過某處(無法找到),視圖文件夾中的aspx文件需要作爲部署的一部分進行復制,即它們不是預編譯的dll的一部分。我無法驗證,因爲我沒有安裝IIS。這是不正確的嗎? – Noel 2009-10-25 09:08:52