Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 从生成定义文件控制pdb文件输出_File_Msbuild_Pdb Files - Fatal编程技术网

File 从生成定义文件控制pdb文件输出

File 从生成定义文件控制pdb文件输出,file,msbuild,pdb-files,File,Msbuild,Pdb Files,我正在尝试生成没有生成pdb文件的发布版本。我看到很多帖子建议右键点击项目,选择属性,进入Build选项卡,然后进入Advanced。。。butoon并将调试信息更改为“无”。这一切都是可行的,但我需要为构建约50个解决方案而这样做,每个解决方案包含约25个项目!其他帖子提到编辑适当的.csproj文件,但同样,由于项目太多,这需要很长时间。有没有办法通过TFSBuild.proj文件实现这一点 我尝试将以下内容添加到TFSBuild.proj文件中,但没有成功 <PropertyGrou

我正在尝试生成没有生成pdb文件的发布版本。我看到很多帖子建议右键点击项目,选择属性,进入Build选项卡,然后进入Advanced。。。butoon并将调试信息更改为“无”。这一切都是可行的,但我需要为构建约50个解决方案而这样做,每个解决方案包含约25个项目!其他帖子提到编辑适当的.csproj文件,但同样,由于项目太多,这需要很长时间。有没有办法通过TFSBuild.proj文件实现这一点

我尝试将以下内容添加到TFSBuild.proj文件中,但没有成功

<PropertyGroup>
  <Configuration>Release</Configuration>
  <Platform>AnyCPU</Platform>
</PropertyGroup>

<PropertyGroup>
  <DebugSymbols>false</DebugSymbols>
  <DebugType>none</DebugType>
  <Optimize>true</Optimize>
</PropertyGroup>

释放
任意CPU
假的
没有一个
真的
下面一行打印出Release | AnyCPU、none和false,但我仍然在$(OutputDir)文件夹中看到.pdb文件

<Message Text="$Configuration|Platform): $(Configuration)|$(Platform)" />
<Message Text="DebugType is: $(DebugType)"/>
<Message Text="DebugSymbols is: $(DebugSymbols)"/>

提前感谢,, Urvi

我不完全确定(没有安装team build),但当您在TFSBuild项目中更改此类属性时,它们很可能不会传播到实际的项目文件,因为实际的解决方案/项目是通过启动另一个MSBuild任务生成的,Microsoft.TeamFoundation.Build.targets中的责任目标不会将这些属性传递给任务

例如,这是前面提到的文件中的目标“CallCompile”(同样,我不确定这是否是构建场景使用的,但想法是相同的):


因此,您可以将想要的属性添加到目标文件中,但:

  • 这意味着您必须在每次升级时更改该文件
  • 这可能不是您所有项目所希望的行为
  • 最后但并非最不重要的一点:如果调用的项目文件还包含DebugSymbols/…,则文件中的属性值将覆盖MSBuild任务传递的属性值,因此最终您仍然需要更改所有项目文件以处理该问题

实现所需功能的一种方法是,用您选择的语言编写一个脚本,列出特定目录下的所有*.csproj文件,然后修改每个文件以将true替换为false。或者更快:在explorer中搜索*.csproj,在编辑器中一次打开所有文件,并对所有打开的文件执行查找/替换。

为什么不想生成PDB?只是古玩。
<Target Name="CallCompile" DependsOnTargets="$(CoreCompileDependsOn)">
  <!-- Pass in all properties that users might want during the course of the compile targets. -->
  <MSBuild Projects="$(MSBuildProjectFile)"
           Properties="a lot of properties, but not DebugSymbols etc"
           Targets="CoreCompile">
  </MSBuild>
</Target>