我正在尝试生成一个没有生成pdb文件的发布版本。我看过很多帖子,建议右键单击项目,选择Properties,进入Build选项卡,然后进入Advanced ... butoon并将Debug Info更改为none。这是有效的,但是我需要这样做才能构建大约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>
以下行打印出Release | AnyCPU,none和false,但我仍然在$(OutputDir)文件夹中看到.pdb文件。
<Message Text="$Configuration|Platform): $(Configuration)|$(Platform)" />
<Message Text="DebugType is: $(DebugType)"/>
<Message Text="DebugSymbols is: $(DebugSymbols)"/>
提前致谢, Urvi
答案 0 :(得分:0)
我不完全确定(没有安装团队版本),但很可能在TFSBuild项目中更改此类属性时,它们不会传播到您的实际项目文件,因为实际的解决方案/项目是通过启动另一个MSBuild任务构建,Microsoft.TeamFoundation.Build.targets中的负责目标不会将这些属性传递给任务。
例如,这是前面文件中的目标“CallCompile”(同样,我不确定这是你的构建场景使用的但是想法是一样的):
<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>
所以你可能会逃脱将目标文件添加到目标文件中,但是:
获得所需内容的一种方法是使用您选择的语言编写一个脚本,列出某个目录下的所有* .csproj文件,然后修改每个文件以用false替换true。甚至更快:在资源管理器中搜索* .csproj,在编辑器中一次打开所有文件,并对所有打开的文件执行查找/替换。