【问题标题】:Set MSBuild Web Publish Property "ExcludeGeneratedDebugSymbol" from Command Line从命令行设置 MSBuild Web 发布属性“ExcludeGeneratedDebugSymbol”
【发布时间】:2013-03-01 23:52:07
【问题描述】:

我正在使用 NAnt 构建我的项目并发布网站项目。我想在生成的包中包含 PDB。执行msbuild时如何从命令行设置ExcludeGeneratedDebugSymbol属性?

我尝试将其添加到参数列表中,但仍然没有看到 PDB。我的exec 任务如下所示:

<exec program="${MSBuildPath}" workingdir="${path::get-full-path(PublishWebProject.SourcePath)}\">
  <!-- Don't show the logo. -->
  <arg value="/nologo"/>
  <!-- Build w/o Clean -->
  <arg value="/t:Build"/>
  <!-- Configuration, Output, Options, No Warnings -->
  <arg value="/p:OutputPath=bin\;OutDir=${path::get-full-path(PublishWebProject.OutputPath)};Configuration=${Configuration};Platform=Any CPU;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;WarningLevel=0;RunCodeAnalysis=false;ExcludeGeneratedDebugSymbol=false"/>
  <!-- Quiet -->
  <arg value="/v:q"/>
  <!-- Project Path -->
  <arg value="${PublishWebProject.ProjectFileName}"/>
</exec>

这是对 MSBuild 的实际调用:

 [exec] Starting 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe (/nologo /t:Build "/p:OutputPath=bin\;OutDir=D:\Projects\XYZ\Publish\Release-Production\CommonWeb\;Configuration=Release-Production;Platform=Any CPU;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;WarningLevel=0;RunCodeAnalysis=false;ExcludeGeneratedDebugSymbol=false" /v:q CommonWeb.csproj)' in 'D:\Projects\XYZ\Source\CommonWeb\'

相当于:

D:\Projects\XYZ\Source\CommonWeb> C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe /nologo /t:Build "/p:OutputPath=bin\;OutDir=D:\Projects\XYZ\Publish\Release-Production\CommonWeb\;Configuration=Release-Production;Platform=Any CPU;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False;WarningLevel=0;RunCodeAnalysis=false;ExcludeGeneratedDebugSymbol=false" /v:q CommonWeb.csproj

我也尝试将 UseWPP_CopyWebApplication 设置为 false,但这也没有帮助。

【问题讨论】:

  • 您能否发布 NAnt 输出。我怀疑未引用的属性参数可能是一个问题
  • NAnt 会在需要时自动引用参数。例如,我的以/p:OutputPath... 开头的长参数以"/p:OutputPath..." 结尾,因为它在OutDir 参数的值中有空格。并且构建工作正常,我只是没有得到 PDB。我什至不相信 ExcludeGeneratedDebugSymbol 属性是可以发送的有效属性。我会在几分钟后发布完整的命令行...
  • 我的下一个猜测是设置调试信息。找到我的答案

标签: .net-4.0 build msbuild nant


【解决方案1】:

您的项目文件包含有关输出调试信息的信息。尝试将调试信息设置为pdb-only:

<arg value="/debug:pdbonly" />

【讨论】:

  • 这给了我:MSBUILD : error MSB1001: Unknown switch. Switch: /debug:pdbonly 我有点预料到,因为它没有在此处列为开关:msdn.microsoft.com/en-us/library/vstudio/… 我确实有“属性> 构建> 输出> 高级> 输出> 调试信息”在项目文件中设置为“pdb-only”。我还取消选中了Properties &gt; Package/Publish Web &gt; Items to deploy &gt; Exclude generated debug symbols。无济于事。
  • 您知道设置输出调试信息是构建配置敏感的吗?在将Debug Info 设置为pdb-only 之前将Properties &gt; Build &gt; Configuration 设置为All Configurations
  • 是的,我的所有构建配置都选择了pdb-only(并且上述复选框未选中)。
猜你喜欢
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
相关资源
最近更新 更多