[.NET] dotnet pack -c release เพิ่ม .pdb ลงในเข้าไปใน Package

จาก Blog ตอนก่อน ได้มีการอธิบายการทำ Nuget Package ใช้ในบริษัทกันไปครับ และสอน Debug Nuget Package ที่ Build ไปครับ หลังจากที่ Build Server ได้ Update Visual Studio เป็นเวอร์ชัน 16.10.3 พบว่าคำสั่ง dotnet pack มีปัญหาครับ

dotnet pack <<.csproj / .sln >> -c Release --include-source --include-symbols -o nuget -p:PackageVersion= << Your Version>>
  • ของเดิม เมื่อกำหนด --include-source --include-symbols แม้ว่า Build Dll แบบ Release ตัวไฟล์ Symbol (.pdb) และ Source Code ถูก Pack เข้ามาใน Nuget Package ด้วยครับ
  • ของใหม่ Nuget Package ที่ได้ไม่มีไฟล์ Symbol (.pdb)

ผลกระทบ

  • Debug Code เพื่อดูเคสไม่ได้ ทำให้ทีมมีปัญหากับการดูเคสด่วน

dotnet pack -c release เพิ่มไฟล์ Symbol (.pdb)

สำหรับวิธีการเพิ่มไฟล์ Symbol (.pdb) เข้าไปใน Nuget Package เมื่อ Build Dll แบบ Release Mode มีขั้นตอนที่ไม่ยาก แต่ถึกนิดนึงครับ เพราะต้องไปเพิ่ม rule ลงใน csproj เพิ่มแทนครับ โดยมี Pattern ดังนี้

<ItemGroup Label="dotnet pack instructions">
  <Content Include="$(OutputPath)<<ชื่อไฟล์.pdb>>">
    <Pack>true</Pack>
    <PackagePath>lib/<<Target Framework ของ Nuget Package>></PackagePath>
  </Content>
</ItemGroup>

สำหรับตัวอย่างที่ลอง อย่างผมมีไฟล์ ds.Service.pdb ซึ่งตัว Project เป็น .NET Standard 2.0 สามารถเพิ่ม rule เข้าไปได้ ดังนี้ครับ

<ItemGroup Label="dotnet pack instructions">
  <Content Include="$(OutputPath)ds.Service.pdb">
    <Pack>true</Pack>
    <PackagePath>lib/netstandard2.0</PackagePath>
  </Content>
</ItemGroup>

ถ้ามาดูภาพรวมของไฟล์ .csproj ตำแหน่งที่เพิ่มอยู่ในกรอบสีแดงครับ


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.