Как правильно использовать опцию компоновщика / SOURCELINK с c ++ - PullRequest
0 голосов
/ 20 сентября 2018

Мы используем SourceLink с c # проектами, и он работает просто отлично.Когда мы пытаемся использовать его в проектах C ++, параметр / SOURCELINK в компоновщике, похоже, игнорируется, поскольку в создаваемом PDB нет соответствующих метаданных

Я использую этот MSBuild:

 msbuild /version
 Enterprise
 Microsoft (R) Build Engine version 15.8.168+ga8fba1ebd7 for .NET Framework
 Copyright (C) Microsoft Corporation. All rights reserved.

 15.8.168.64424

Опция Linker описана здесь: / SOURCELINK

Мы используем его вот так

/SOURCELINK:"C:\Projects\SourceLinkTest\sourcelink.json"

с файлом JSON, созданным вручную (потому что наш Stash все еще включенv4.5.2)

{"documents":
{"C:\\Projects\SourceLinkTest\\*":
    "https://stash.mycompany.com/projects/EDMPTF/repos/sourcelink/browse/*?at=ae281edb41c2da2a9375a63d8be9dd3ca00660fd&raw"
}
}

шаг MSBuild Link выглядит следующим образом:

Link:                                                                                                                                                                                                                                 
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX86\x86\link.exe /ERRORREPORT:QUEUE /OUT:"C:\Projects\SourceLinkTest\Debug\SourceLi  nkTest.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='fa  lse'" /manifest:embed /DEBUG:FASTLINK /PDB:"C:\Projects\SourceLinkTest\Debug\SourceLinkTest.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Projects\SourceLinkTest\Debug\SourceLinkTest.lib" /MACHINE:X86 /SOURCELINK:"C:\Projects\SourceLinkTest\sourcelink.json" Debug\SourceLinkTest.res        
Debug\SourceLinkTest.obj                                                                                                                                                                                                            
Debug\stdafx.obj                                                                                                                                                                                                                    
SourceLinkTest.vcxproj -> 
C:\Projects\SourceLinkTest\Debug\SourceLinkTest.exe

Мы используем Jetbrains dotPeek для проверки содержимого PDB, поскольку инструмент SourceLink V3 может анализировать только портативные PDB

1 Ответ

0 голосов
/ 01 февраля 2019

После разговора с разработчиками Microsoft выясняется, что это ошибка.Частичное исправление в VS2017 15.9.7.Полное исправление в VS2019.

...