簡體   English   中英

Visual Studio發布使用調試模式而不是發布

[英]Visual Studio publish uses debug mode instead of release

設置是這樣的:

.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腳本和樣式表。

我確保各個項目的配置中的編譯元素看起來像這樣:

<compilation debug="false">

無論如何,無論我做什么,它看起來都像在調試模式下構建了一個程序包。 我完全不知所措,而且我不知道該看什么,因為一切看起來都很好。

這個問題顯示了一個相關的問題: VS發布到天藍色使用調試而不是發布

但是他們正在使用TFS自動化構建和發布過程,而我正在手動進行。

任何提示或指示將派上用場。 或至少列出要檢查的項目並與其他項目進行比較。

經過更多的挖掘,我找到了原因。 一個網站角色上的多個站點會引起問題。 由於站點代碼只是被復制到sitesroot文件夾中。

我已設法解決以下文章中的問題:

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

需要做的是:

  1. 在每個站點上設置prebuild和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元素以指向自定義生成文件夾

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM