我已经阅读了如何将调试符号包含在 .vsix 包问题和答案和 Daniel Cazzulino 的帖子中,但这些忽略了一个事实,即一个人的 VSIX 需要包含来自其他来源(如 nuget 包(的 PDB。
例如: 我有一个 VSIX 项目,命名为 MyExtension.vsix。它引用了一个nuget包,将其命名为SomeNuget,而SomeNuget又由SomeNuget.dll和SomeNuget.pdb组成。
我想把这个SomeNuget.pdb包含在我的MyExtension.vsix中。
如果有答案吗?
由于nuget打包工作流程中已确认的问题,我得到了一个解决方法:
附加以下内容:
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer>
<IncludeDebugSymbolsInVSIXContainer>true</IncludeDebugSymbolsInVSIXContainer>
<IncludeDebugSymbolsInLocalVSIXDeployment>true</IncludeDebugSymbolsInLocalVSIXDeployment>
</PropertyGroup>
<Target Name="_ResolveCopyLocalNuGetPackagePdbs"
Condition="$(CopyLocalLockFileAssemblies) == true"
AfterTargets="ResolveReferences"
BeforeTargets="GetVsixSourceItems">
<ItemGroup>
<VSIXCopyLocalReferenceSourceItem
Include="@(ReferenceCopyLocalPaths->'%(RootDir)%(Directory)%(Filename).pdb')"
Condition="Exists('%(RootDir)%(Directory)%(Filename).pdb')" />
</ItemGroup>
</Target>
到vsix.csproj文件中密封交易。对我来说,这适用于我构建扩展的所有版本的视觉工作室:
- 2010 年
- 2015 年
- 2017 年
- 2019 年
- 2022 年