debugging 如何为C++库创建一个完全可调试的自包含nuget包(lib、pdb和source)?

mf98qq94  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(144)

我有一个用Visual Studio 2022编译的C++库,必须发布到内部nuget提要(普通网络共享文件夹)。是否有一种方法可以将库的pdb文件和源代码包含在包中,使其在无法访问源代码控制存储库的计算机上完全可调试(在Visual Studio 2022中)?目前,我使用.nuspec文件来构建包。我知道SourceLink,但一直找不到任何提到使用它与一个普通的文件夹在包中,而不是一个托管的云服务。我没有太多的选项来启动服务或使用外部资源,我也不在乎调试材料是否会使包膨胀,因为它只供小型内部开发组使用。
下面是我当前的.nuspec文件的样子:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>Corp.MyLib.Cpp</id>
    <version>0.1.0.0</version>
    <description>My library</description>
    <authors>Me</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <tags>native, nativepackage, mylib, C++, Corp</tags>
    <dependencies>
      <group targetFramework="native0.0" />
    </dependencies>
  </metadata>
  
  <files>
    <!-- Targets & Props -->
    <file src=".\Corp.MyLib.Cpp.targets" target="build\native\Corp.MyLib.Cpp.targets" />
    <!-- All header files -->
    <file src="..\Build\**\*.h" target="lib\native\include" />
    <!-- Binaries -->
    <!-- 
      Project is already configured to build outputs to appropriate subpath under lib
      \win\$(PlatformTarget)\win-$(PlatformTarget)-$(Configuration)\$(PlatformToolset)
      Ex: \win\x86\win-x86-Release\v143\mylib.lib
    -->
    <file src="..\Build\Lib\**" target="build\native\lib\" />
  </files>
</package>

字符串

thtygnil

thtygnil1#

1.在.nuspec旁边创建一个名为lib的子文件夹。把.dll,lib,exp. lib文件夹中的pdb文件。
2.添加<file src="lib\**" target="lib" />
3.在nuget packg之后,你可以通过修改文件扩展名为zip来检查包,并且会有一个lib文件夹。
注意:与C#不同,您需要在下载本机包后手动添加库作为依赖项。
your.nuspec:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    
    <id>MyPackage</id>
    <version>1.0.1</version>
    <authors>AuthorName</authors>
    <owners>OwnerName</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description here</description>
    <releaseNotes>Release notes here</releaseNotes>
  </metadata>
  <files>
    
    <file src="*" target="content" />
<file src="lib\**" target="lib" />
  </files>
</package>

字符串

相关问题