Как создать PDB для проектов, управляемых.net, в режиме выпуска?
Я знаю, что PDB создаются для управляемых проектов в.NET, давая компилятору аргумент /debug. Есть ли способ указать это в графическом интерфейсе VS (2005)?
Единственный способ, которым я смог заставить его генерировать PDB в режиме выпуска, - это вручную изменить файл.csproj и добавить:
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
в настройках "релиз":
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
Еще одна вещь: я узнал от MSDN здесь, что возможные значения для DebugType
тег являются:
full
pdbonly
none
Как эти значения влияют на поведение компилятора?
3 ответа
В VS2008 вы можете установить свойство, используя свойства проекта ->
строить ->
Дополнительно... ->
Отладочная информация.
В DEBUG:
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
В РЕЛИЗЕ:
<DebugSymbols>true</DebugSymbols>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
Я нашел этот запрос МОНО, который может пролить некоторый свет на разницу междуfull
' а также 'pdbonly
".
csc имеет отладочный тип "pdbonly", который генерирует pdbs, в то же время генерируя код времени выполнения, т.е. оптимизированный, без атрибутов отладчика и т. д.
Это важно для возможности получить полезные трассировки стека из кода качества выпуска.
Мне кажется, что наличие двух тегов (DebugSymbols и DebugType) является избыточным.