繁体   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