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

上記のスクリプトを使用して、Asp.Netプロジェクトを公開しています。プロジェクト設定では、デバッグシンボルがリリースモードで生成されることを絶対に確認しました。それでも、MsBuildは出力にpdbファイルを生成していません。

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

3 に答える 3

18

Microsoft.Web.Publishing.targetsソースを確認したところ、リリースモードで変数(ExcludeGeneratedDebugSymbol)がTrueに設定されていることがわかりました。コメントから、WebSiteプロジェクトからシンボルを除外したかったようですが、WebApplicationプロジェクトの条件が適切に設定されていません。

そこで、呼び出し元の引数からビルドスクリプトをオーバーライドすることにしました。これは、魅力のように機能しました。将来の安定性のために、それが引き起こす可能性のある、または文書化されていないプロパティを使用する可能性のある副作用をまだ確認していませんが、今のところは機能します。

Microsoft.Web.Publishing.targetファイルから

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

スクリプトを次のように更新しました。

<MSBuild Projects="$(ProjectFile)"  Targets="_WPPCopyWebApplication;"
Properties="OutDir=..\publish;Configuration=Release;Platform=AnyCPU"; ExcludeGeneratedDebugSymbol=false />
于 2013-03-22T17:59:23.970 に答える
3

公開プロファイル(.pubxml)ファイルを更新して、そのプロパティ値を含めることもできます。今日、TFSビルド2015の新しいビルドビットを使用してこれを実行し、Webパブリッシングに.pdbファイルを含める必要がありました。下部にプロパティが追加されたファイルの内容の例を参照してください。

<?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>
于 2015-07-20T13:07:02.823 に答える
0

最後のプロパティグループセクション(要素*.csprojの直前)として、これをファイルに直接配置できます。Import

<PropertyGroup>
  <ExcludeGeneratedDebugSymbol Condition="$(DebugSymbols) == true">false</ExcludeGeneratedDebugSymbol>
</PropertyGroup>
于 2018-03-27T16:56:40.493 に答える