2013-07-09 64 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> 
    
相关问题