xamarin / xamarin-macios

.NET for iOS, Mac Catalyst, macOS, and tvOS provide open-source bindings of the Apple SDKs for use with .NET managed languages such as C#
Other
2.44k stars 507 forks source link

Copy the .dSYM to the publish directory #15384

Open rolfbjarne opened 2 years ago

rolfbjarne commented 2 years ago

User request: copy the .dSYM we create to the publish directory during publishing.

This should be fairly easy to implement.

Ref: https://github.com/xamarin/xamarin-macios/issues/15365#issuecomment-1171629706.

softlion commented 1 year ago

So no plan on this ?

rolfbjarne commented 1 year ago

So no plan on this ?

We intend to implement this, but it's not a very high priority (because there's an easy workaround), so it might take a while.

rolfbjarne commented 1 year ago

Slightly related: https://github.com/xamarin/xamarin-macios/issues/17807#issuecomment-1473369893.

cleardemon commented 10 months ago

Hi, I've been trying to follow all the various threads and search results around this but I can't find a conclusive answer.

When using dotnet publish on an iOS MAUI app in Release configuration, I don't seem to see any *.dSYM files being produced with .NET 7. Nothing in the obj folder, nothing near the resulting IPA.

What is the special trick, if any, to get these produced so they can be submitted to something like App Center?

rolfbjarne commented 10 months ago

It should be in this folder: bin/Release/net7.0-ios/ios-arm64/TestApp.app.dSYM

If that doesn't work, please create a binlog (dotnet publish /bl:msbuild.binlog) and then upload the resulting msbuild.binlog file.

cleardemon commented 10 months ago

Ah, thank you Rolf ❤️

I just assumed it was going to be in obj somewhere, didn't think to look in bin! All good.

imsam67 commented 7 months ago

I'm using the latest version of .NET MAUI (w/ SR1) targeting .NET 8 and use GitHub actions to publish my app which works and uploads my app to TestFlight. Now I have a situation where the app works perfectly fine on a physical device but the AppStore is rejecting it due a crash on start up and I just can't reproduce the crash.

So I started looking for .dSYM file but I can't find one. I downloaded the artifact.zip file from GitHub Actions and looked everywhere but can't find a .dSYM file anywhere. Is there something I need to specify in the YAML file or in .csproj for a .dSYM file to be generated?

softlion commented 7 months ago

.dSYM is a folder, not a file 😁

imsam67 commented 7 months ago

@softlion It's just not there though in my case. Not sure if this is due to a missing setting in my project or an issue somewhere but I don''t have a .dSYM folder either! Here's a question I posted on SO about this but I still don't have a resolution: https://stackoverflow.com/questions/77929689/how-to-generate-dsym-file-for-net-maui-app

imsam67 commented 7 months ago

Here it is:

# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net

name: Build & Publish MyApp iOS

on:
  pull_request:
    branches: [ "master" ]

jobs:
  build-pack-n-ship:

    runs-on: macos-14

    steps:
    - uses: maxim-lobanov/setup-xcode@v1
      with:
        xcode-version: latest
    - uses: actions/checkout@v3
    - name: Setup .NET
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 8.0.x
    - name: Install MAUI workload
      run: dotnet workload install maui
    - name: Import Code-Signing Certificates
      uses: Apple-Actions/import-codesign-certs@v1
      with:
        p12-filepath: 'MyAppleDistributionCert.p12'
        p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
    - name: Download Apple Provisioning Profiles
      uses: Apple-Actions/download-provisioning-profiles@v1
      with:
        bundle-id: 'com.mycompany.myapp'
        issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
        api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
        api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
    - name: Restore dependencies
      run: dotnet restore
    - name: Build and Publish
      run: dotnet publish -c Release -f:net8.0-ios /p:ArchiveOnBuild=true /p:EnableAssemblyILStripping=false
    - name: List generated files
      run: ls -l
    - name: Upload Build Artifact
      uses: actions/upload-artifact@v3.0.0
      with:
        path: '**/*.ipa'
    - name: Archive dSYM files
      run: zip -r dSYMs.zip . -i ./MyApp/bin/Release/net8.0-ios/ios-arm64/*.app.dSYM
    - name: Upload dSYM Artifact
      uses: actions/upload-artifact@v3.0.0
      with:
        name: dSYMs
        path: '**/dSYMs.zip'
    - name: 'Upload app to TestFlight'
      uses: apple-actions/upload-testflight-build@v1
      with: 
        app-path: './MyApp/bin/Release/net8.0-ios/ios-arm64/publish/MyApp.ipa'
        issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
        api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
        api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}