2013-07-09 67 views
0

的設置是這樣的:的Visual Studio發佈使用調試模式,而不是釋放

.NET 4.5 
Visual Studio 2012 
Azure 2.0 

one WebRole which hosts 2 sites: 
    one MVC4 
    one WCF project 

當我發佈網站到雲,它看起來就像是在調試模式下工作。 我發佈了它,方法是右鍵單擊雲項目,單擊發布,然後在提示時選擇配置版本和「發佈」版本版本。

看看發生了什麼,我通過改變擴展.zip開闢了.cspkg文件,並檢查了.cssx文件中它(也改變了擴展.zip)。這讓我看到有我的網站和服務的文件夾sitesroot/0sitesroot/1。這些包含源代碼,甚至包括.csproj文件。爲了進行比較,我查看了雲上的另一個解決方案,其中只有bin文件夾,唯一的非編譯代碼是視圖和.js腳本和樣式表。

我確信,在個別項目CONFIGS編譯元素是這樣的:

<compilation debug="false"> 

總之,無論我做什麼,它看起來像它建立在調試模式下的包。我完全無所適從,我不知道該看什麼,因爲一切都很好。

這個問題表明了相關的問題: VS publish to azure uses debug instead of release

但他們正在使用TFS自動構建和發佈過程,而我做手工。

任何提示或指針都會派上用場。或者至少有一些事情要檢查並與其他項目進行比較。

回答

1

經過了一些(很多)挖掘,我找到了原因。這是導致問題的一個Web角色上的多個站點。由於網站代碼只是被複制到sitesroot文件夾中。

我已經設法解決這一問題的文章在這裏如下:

http://michaelcollier.wordpress.com/2013/01/14/multiple-sites-in-a-web-role/

什麼需要做的是:

  1. 在每個站點的設置預生成和postbuild事件照顧複製內置dll到一個自定義生成文件夾

    Pre (clears the custom build folder): 
    rmdir "$(ProjectDir)..\YOUR-AZURE-PROJECT\Sites\$(ProjectName)" /S /Q 
    
    Post (copies dlls to the custom build folder): 
    %WinDir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe "$(ProjectPath)" /T:PipelinePreDeployCopyAllFilesToOneFolder /P:Configuration=$(ConfigurationName);PreBuildEvent="";PostBuildEvent="";PackageAsSingleFile=false;_PackageTempDir="$(ProjectDir)..\YOUR-AZURE-PROJECT\Sites\$(ProjectName)" 
    
  2. 改變網站的元素在ServiceDefinition.csdef指向自定義生成文件夾

    <Sites> 
        <Site name="WebSite" physicalDirectory="..\..\Sites\WebSite\"> 
         <Bindings> 
          <Binding name="Endpoint1" endpointName="Endpoint2" /> 
         </Bindings> 
        </Site> 
    </Sites> 
    
相關問題