MSBuild无法构建PDB文件

13
我有一个从VS2010转换到VS2012的解决方案。在发布版本中,我希望它生成PDB文件和完整的调试符号,因为我需要在生产环境中进行远程调试。
因此,我将“Debug Info”设置为“full”,以便为发布配置生成完整的调试信息。我还确认以下内容包含在项目清单文件中:
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimized>true</Optimized>

但是,当我运行MSBuild时,它创建的软件包不包含PDB文件。然而,如果我使用Visual Studio的发布功能,选择发布Release配置,最终在目标Web服务器上会得到PDB文件。Build命令可能存在什么问题?

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "C:\MyWebApp.csproj"  
  /t:rebuild;package 
  /p:OutPath="C:\MyWebApp\obj" 
  /p:OutputPath="C:\MyWebApp\bin" 
  /p:Configuration=Release 
  /p:Platform=AnyCPU

我尝试关闭优化位,但没有帮助。

2个回答

16

尝试添加

/p:DebugSymbols=true

/p:DebugType=full

如果您要发布 Web 应用程序,则还应添加:

/p:ExcludeGeneratedDebugSymbol=false


只需添加/p:DebugSymbols=true,就可以为我工作。 - ceztko

3

您可以直接从命令行访问此内容:

msbuild.exe "C:\\MyWebApp.csproj" /t:rebuild;package /p:OutPath="C:\\MyWebApp\\obj" /p:OutputPath="C:\\MyWebApp\\bin" /p:Configuration=Release /p:Platform=AnyCPU /p:DebugType=pdbonly

请注意,这是一个用于构建和打包Web应用程序的命令。其中一些参数包括输出路径,输出目录,配置等。

我尝试过了,但仍未生成PDB文件。而且这里提到的项目清单中甚至没有ExcludeGeneratedDebugSymbol。https://dev59.com/C2Up5IYBdhLWcg3wCUKx - Ray Cheng
你尝试过不使用额外的属性(OutPath,OutputPath等)吗? - Jay Harris
我非常确定,在引用属性值时,必须转义反斜杠。引用"C:\Foo.csproj"时应该变成 "C:\Foo.csproj"。 - Jay Harris
我尝试了没有额外属性,但仍然没有PDB。 - Ray Cheng
反斜杠对我有用,我的实际输出路径是一个网络共享,并且我在那里获得了最终的压缩文件。 - Ray Cheng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接