2013-03-22 11 views
9
<MSBuild Projects="$(ProjectFile)" Targets="_WPPCopyWebApplication;" 
Properties="OutDir=..\publish;Configuration=Release;Platform=AnyCPU" /> 

Sto utilizzando lo script sopra per pubblicare il progetto Asp.Net. Nelle impostazioni del progetto, sono assolutamente sicuro che i simboli di debug siano generati in modalità di rilascio. Ancora MsBuild non sta generando i file pdb nell'output.MsBuild non genera file PDB nella configurazione di rilascio

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <DebugType>Full</DebugType> 
    <DefineDebug>false</DefineDebug> 
    <DefineTrace>true</DefineTrace> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\</OutputPath> 
    <DocumentationFile>WebProject.xml</DocumentationFile> 
    <DebugSymbols>true</DebugSymbols> 
    </PropertyGroup> 
+0

Come hai assicurato che i simboli di debug vengano generati? Quali impostazioni hai impostato per questo? – TimVK

+0

@Syam Ciao, ho lo stesso problema. 2 cose: lo sto vivendo solo da quando sono passato a vs2012, è così anche per te? Inoltre, ho notato che i file .pdbs * sono * generati *, ma poi vengono eliminati proprio alla fine della build. Succede anche per te? – bottlenecked

+0

@TimVK Ho aggiornato la domanda con le informazioni rilevanti dal file vbproj – Syam

risposta

16

Dopo aver guardato la fonte Microsoft.Web.Publishing.targets, ho trovato una variabile (ExcludeGeneratedDebugSymbol) essendo impostata su true in modalità di rilascio. Dai commenti sembra che volessero escludere simboli dal progetto WebSite, ma la condizione non è impostata correttamente per il progetto WebApplication.

Quindi, ho deciso di sovrascrivere il mio script di build dagli argomenti del chiamante e ha funzionato come un fascino. Non ho ancora accertato che nessun lato possa influenzare o usare la proprietà non documentata per la stabilità futura, ma per ora funziona.

Dal Microsoft.Web.Publishing.target il file

<!--For website we will always exclude debug symbols from publishing unless it is set explicitly by user in website publish profile--> 
    <ExcludeGeneratedDebugSymbol Condition="'$(ExcludeGeneratedDebugSymbol)'=='' And '$(_WebProjectType)' == 'WebSite'">True</ExcludeGeneratedDebugSymbol> 

    <ExcludeGeneratedDebugSymbol Condition="'$(ExcludeGeneratedDebugSymbol)'=='' And '$(Configuration)' == 'Release'">True</ExcludeGeneratedDebugSymbol> 
    <ExcludeGeneratedDebugSymbol Condition="'$(ExcludeGeneratedDebugSymbol)'==''">False</ExcludeGeneratedDebugSymbol> 

Ho aggiornato il mio script come segue.

<MSBuild Projects="$(ProjectFile)" Targets="_WPPCopyWebApplication;" 
Properties="OutDir=..\publish;Configuration=Release;Platform=AnyCPU"; ExcludeGeneratedDebugSymbol=false /> 
3

Si potrebbe anche aggiornato il file profilo di pubblicazione (.pubxml) per includere tale valore della proprietà. Ho dovuto farlo oggi con i nuovi bit di costruzione in TFS Build 2015 per includere la pubblicazione sul Web con i file .pdb. Vedi il contenuto di esempio del file con la proprietà aggiunta in fondo.

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
This file is used by the publish/package process of your Web project. You can customize the behavior of this process 
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>FileSystem</WebPublishMethod> 
    <SiteUrlToLaunchAfterPublish /> 
    <publishUrl>C:\Publish</publishUrl> 
    <DeleteExistingFiles>True</DeleteExistingFiles> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish> 
    <ExcludeGeneratedDebugSymbol>false</ExcludeGeneratedDebugSymbol> 
    </PropertyGroup> 
</Project> 
Problemi correlati