[英]Visual Studio: Building in Debug mode but the files still built in Release folder
[英]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/0
和sitesroot/1
文件夾。 這些包含源代碼,甚至包括.csproj
文件。 作為比較,我在雲上檢查了另一個解決方案,該解決方案只有bin
文件夾,唯一的未編譯代碼是視圖, .js
腳本和樣式表。
我確保各個項目的配置中的編譯元素看起來像這樣:
<compilation debug="false">
無論如何,無論我做什么,它看起來都像在調試模式下構建了一個程序包。 我完全不知所措,而且我不知道該看什么,因為一切看起來都很好。
這個問題顯示了一個相關的問題: VS發布到天藍色使用調試而不是發布
但是他們正在使用TFS自動化構建和發布過程,而我正在手動進行。
任何提示或指示將派上用場。 或至少列出要檢查的項目並與其他項目進行比較。
經過更多的挖掘,我找到了原因。 一個網站角色上的多個站點會引起問題。 由於站點代碼只是被復制到sitesroot
文件夾中。
我已設法解決以下文章中的問題:
http://michaelcollier.wordpress.com/2013/01/14/multiple-sites-in-a-web-role/
需要做的是:
在每個站點上設置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)"
更改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.