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

Używam powyższego skryptu do publikowania projektu Asp.Net. W ustawieniach projektu absolutnie upewniłem się, że symbole debugowania są generowane w trybie zwolnienia. Nadal MsBuild nie generuje plików pdb na wyjściu.MsBuild nie generuje plików PDB w konfiguracji Release

<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

W jaki sposób zapewniono wygenerowanie symboli debugowania? Jakie ustawienia ustawiłeś w tym celu? – TimVK

+0

@Samam Witam, mam ten sam problem. 2 rzeczy: przeżywam to tylko od momentu przejścia na vs2012, czy to też dotyczy ciebie? Co więcej, zauważyłem, że .pdbs * są * generowane *, ale potem są usuwane zaraz po zakończeniu kompilacji. Czy to też się dzieje? – bottlenecked

+0

@TimVK Mam aktualizację pytania z istotnymi informacjami z pliku vbproj – Syam

Odpowiedz

16

Po patrząc na źródło Microsoft.Web.Publishing.targets, znalazłem zmienna (ExcludeGeneratedDebugSymbol) jest ustawiona na wartość True w trybie Release. Z komentarzy wygląda na to, że chcieli wykluczyć symbole z projektu WebSite, ale warunek nie jest prawidłowo ustawiony dla projektu WebApplication.

Tak więc, zdecydowałem się przesłonić mój skrypt budujący od argumentów dzwoniącego i działało jak czar. Nie stwierdziłem jeszcze, że jakakolwiek strona wpływa, może spowodować lub wykorzystać nieudokumentowaną własność dla przyszłej stabilności, ale działa na razie.

Z Microsoft.Web.Publishing.target złożyć

<!--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> 

I zostały zaktualizowane mój skrypt w następujący sposób.

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

Można również zaktualizowany plik Twojego profilu publikowania (.pubxml), aby włączyć tę wartość nieruchomości. Musiałem to zrobić dzisiaj z nowymi bitami kompilacji w TFS Build 2015, aby publikacja internetowa zawierała pliki .pdb. Zobacz przykładową zawartość pliku z właściwością dodaną do dołu.

<?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> 
Powiązane problemy