Bagikan melalui


Menerapkan Kerangka Kerja Dukungan Paket di Visual Studio

Package Support Framework (PSF) adalah proyek sumber terbuka yang memungkinkan Anda menerapkan perbaikan ke aplikasi desktop yang ada. PSF memungkinkan aplikasi berjalan dalam format paket tanpa memodifikasi kode. Package Support Framework membantu aplikasi Anda mengikuti praktik terbaik dari lingkungan runtime modern.

Di bagian berikut, kita akan menjelajahi cara membuat proyek Visual Studio baru, menyertakan Kerangka Kerja Dukungan Paket ke solusi, dan membuat perbaikan runtime.

Langkah 1: Membuat solusi paket di Visual Studio

Di Visual Studio, buat Solusi Visual Studio baru , Solusi Kosong. Sertakan proyek aplikasi apa pun ke Solusi Kosong yang baru dibuat.

Langkah 2: Menambahkan proyek pengemasan

Jika Anda belum memiliki Proyek Kemasan Aplikasi Windows, buat dan tambahkan ke solusi Anda. Buat Visual C# baru -> Windows Universal -> Windows Application Packaging Project dan tambahkan ke solusi yang baru Dibuat.

Untuk informasi selengkapnya tentang proyek Windows Application Packaging, lihat Mengemas aplikasi Anda dengan menggunakan Visual Studio.

Di Penjelajah Solusi, klik kanan proyek pengemasan, pilih Edit File Proyek, lalu tambahkan ini ke bagian bawah file proyek:

...
  <Target Name="PSFRemoveSourceProject" AfterTargets="ExpandProjectReferences" BeforeTargets="_ConvertItems">
    <ItemGroup>
      <FilteredNonWapProjProjectOutput Include="@(_FilteredNonWapProjProjectOutput)">
      <SourceProject Condition="'%(_FilteredNonWapProjProjectOutput.SourceProject)'=='_Runtime fix project name_'" />
      </FilteredNonWapProjProjectOutput>
      <_FilteredNonWapProjProjectOutput Remove="@(_FilteredNonWapProjProjectOutput)" />
      <_FilteredNonWapProjProjectOutput Include="@(FilteredNonWapProjProjectOutput)" />
    </ItemGroup>
  </Target>
</Project>

Langkah 3: Tambahkan proyek untuk perbaikan runtime

Tambahkan proyek Visual C++ -> Windows Desktop -> Dynamic-Link Library (DLL) baru ke solusi.

Selanjutnya, klik kanan proyek tersebut, lalu pilih Properti.

Di halaman properti, temukan bidang Properti Konfigurasi -> C/C++ -> Bahasa -> C++ Standar Bahasa. Kemudian pilih ISO C++17 Standard (/std:c++17) dari menu drop-down.

Klik kanan pada proyek, lalu di menu konteks, pilih opsi Kelola Paket Nuget. Pastikan bahwa opsi Sumber paket diatur ke Semua atau nuget.org.

Klik ikon pengaturan di samping bidang tersebut.

Cari paket Nuget untuk PSF, lalu instal Microsoft.PackageSupportFramework untuk proyek ini.

nuget package

Langkah 4: Tambahkan proyek yang memulai executable Peluncur PSF

Tambahkan Visual C++ baru -> Umum -> Proyek Kosong ke solusi.

Lakukan langkah-langkah berikut:

  1. Klik kanan proyek tersebut, lalu di menu konteks, pilih opsi Kelola Paket Nuget. Pastikan bahwa opsi Sumber paket diatur ke Semua atau nuget.org.
  2. Klik ikon pengaturan di samping bidang tersebut.
  3. Cari paket Nuget untuk PSF, lalu instal Microsoft.PackageSupportFramework untuk proyek ini.

Buka halaman properti untuk proyek, dan di halaman Pengaturan umum, atur properti Nama Target ke PSFLauncher32 atau PSFLauncher64 bergantung pada arsitektur aplikasi Anda.

Tambahkan referensi proyek ke proyek perbaikan runtime dalam solusi Anda.

Klik kanan referensi, lalu di jendela Properti , terapkan nilai-nilai ini.

Properti Nilai
Salin lokal Benar
Salin Rakitan Satelit Lokal Benar
Output Rakitan Referensi Benar
Menautkan Dependensi Pustaka Salah
Menautkan Input Dependensi Pustaka Salah

Langkah 5: Mengonfigurasi proyek pengemasan

Untuk mengonfigurasi proyek pengemasan, lakukan langkah-langkah berikut:

  1. Dalam proyek pengemasan, klik kanan folder Aplikasi , lalu pilih Tambahkan Referensi dari menu dropdown.
  2. Pilih proyek Peluncur PSF dan proyek aplikasi desktop Anda, lalu pilih tombol OK .
  3. Pilih Peluncur PSF dan proyek Aplikasi Desktop, lalu klik tombol Ok. Jika kode sumber aplikasi tidak tersedia, pilih hanya proyek Peluncur PSF.
  4. Di simpul Aplikasi , klik kanan aplikasi Peluncur PSF, lalu pilih Atur sebagai Titik Masuk.

Tambahkan file bernama config.json ke proyek kemasan Anda, lalu salin dan tempel teks json berikut ke dalam file. Atur properti Tindakan Paket ke Konten.

{
    "applications": [
        {
            "id": "",
            "executable": "",
            "workingDirectory": ""
        }
    ],
    "processes": [
        {
            "executable": "",
            "fixups": [
                {
                    "dll": "",
                    "config": {
                    }
                }
            ]
        }
    ]
}

Berikan nilai untuk setiap kunci. Gunakan tabel ini sebagai panduan.

Array kunci Nilai
aplikasi id Gunakan nilai Id atribut Application elemen dalam manifes paket.
aplikasi dapat dieksekusi Jalur paket-relatif ke executable yang ingin Anda mulai. Dalam kebanyakan kasus, Anda bisa mendapatkan nilai ini dari file manifes paket anda sebelum memodifikasinya. Ini adalah nilai Executable atribut Application elemen .
aplikasi workingDirectory (Opsional) Jalur relatif paket untuk digunakan sebagai direktori kerja aplikasi yang dimulai. Jika Anda tidak menetapkan nilai ini, sistem operasi menggunakan System32 direktori sebagai direktori kerja aplikasi.
processes dapat dieksekusi Dalam kebanyakan kasus, ini akan menjadi nama yang dikonfigurasi executable di atas dengan jalur dan ekstensi file dihapus.
perbaikan dll Jalur relatif paket ke DLL perbaikan untuk dimuat.
perbaikan config (Opsional) Mengontrol perilaku DLL perbaikan. Format yang tepat dari nilai ini bervariasi berdasarkan perbaikan demi perbaikan karena setiap perbaikan dapat menafsirkan "blob" ini seperti yang diinginkan.

Setelah selesai, file Anda config.json akan terlihat seperti ini.

{
  "applications": [
    {
      "id": "DesktopApplication",
      "executable": "DesktopApplication/WinFormsDesktopApplication.exe",
      "workingDirectory": "WinFormsDesktopApplication"
    }
  ],
  "processes": [
    {
      "executable": ".*App.*",
      "fixups": [ { "dll": "RuntimeFix.dll" } ]
    }
  ]
}

Catatan

Kunci applications, processes, dan fixups adalah array. Itu berarti Anda dapat menggunakan file config.json untuk menentukan lebih dari satu aplikasi, proses, dan DLL perbaikan.

Men-debug perbaikan runtime

Di Visual Studio, tekan F5 untuk memulai debugger. Hal pertama yang dimulai adalah aplikasi Peluncur PSF, yang pada gilirannya, memulai aplikasi desktop target Anda. Untuk men-debug aplikasi desktop target, Anda harus melampirkan secara manual ke proses aplikasi desktop dengan memilih Debug-Lampirkan> ke Proses, lalu memilih proses aplikasi. Untuk mengizinkan penelusuran kesalahan aplikasi .NET dengan DLL perbaikan runtime asli, pilih jenis kode terkelola dan asli (debugging mode campuran).

Anda dapat mengatur titik henti di samping baris kode dalam kode aplikasi desktop dan proyek perbaikan runtime. Jika Anda tidak memiliki kode sumber ke aplikasi, Anda akan dapat mengatur titik henti hanya di samping baris kode dalam proyek perbaikan runtime Anda.