Appliquer Package Support Framework dans Visual Studio

L’infrastructure de prise en charge des packages est un projet open source qui vous permet d’appliquer des correctifs à votre application de bureau existante. Les fibres discontinues de polyester permettent à une application de s’exécuter dans un format empaqueté MSIX sans modifier le code. Le Framework de prise en charge de package aide votre application à respecter les bonnes pratiques de l’environnement d’exécution moderne.

dans les sections suivantes, nous allons découvrir comment créer un projet de Visual Studio, inclure une infrastructure de prise en charge de Package à la solution et créer des correctifs runtime.

Étape 1 : créer une solution de package dans Visual Studio

dans Visual Studio, créez une nouvelle solution Visual Studio solutions, vide. Incluez tous les projets d’application à la solution vide nouvellement créée.

Étape 2 : ajouter un projet d’empaquetage

si vous n’avez pas encore Windows Project d’empaquetage d’Application, créez-en un et ajoutez-le à votre solution. créez un nouveau Visual C#-> Windows > Windows de création de Project packages d’applications universelles et ajoutez-le à la solution que vous venez de créer.

pour plus d’informations sur Windows projet de Packaging des applications, consultez empaqueter votre application à l’aide de Visual Studio.

dans Explorateur de solutions, cliquez avec le bouton droit sur le projet packaging, sélectionnez modifier le fichier Project, puis ajoutez-le au bas du fichier projet :

...
  <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>

Étape 3 : ajouter un projet pour le correctif du Runtime

ajoutez à la solution un nouveau projet de bibliothèque de Dynamic-Link Visual C++ > Windows Desktop-> .

Ensuite, cliquez avec le bouton droit sur le projet, puis choisissez Propriétés.

Dans la page de propriétés, recherchez les Propriétés de configuration-> C/C++-> Language-> langage C++ standard . Sélectionnez ensuite ISO C++ 17 standard (/std : c++ 17) dans le menu déroulant.

Cliquez avec le bouton droit sur le projet, puis, dans le menu contextuel, choisissez l’option gérer les packages NuGet . Assurez-vous que l’option source du package est définie sur All ou NuGet.org.

Cliquez sur l’icône des paramètres à côté de ce champ.

Recherchez les paquets NuGet pour les fibres discontinues, puis installez Microsoft. PackageSupportFramework pour ce projet.

package nuget

étape 4 : ajouter un projet qui démarre les fibres discontinues Lanceur exécutables

ajoutez un nouveau Visual C++ > général-> Project vide à la solution.

Procédez comme suit :

  1. Cliquez avec le bouton droit sur ce projet puis, dans le menu contextuel, choisissez l’option gérer les packages NuGet . Assurez-vous que l’option source du package est définie sur All ou NuGet.org.
  2. Cliquez sur l’icône des paramètres à côté de ce champ.
  3. Recherchez les paquets NuGet pour les fibres discontinues, puis installez Microsoft. PackageSupportFramework pour ce projet.

Ouvrez les pages de propriétés du projet et, dans la page paramètres généraux , définissez la propriété nom cible sur PSFLauncher32 ou PSFLauncher64 en fonction de l’architecture de votre application.

Ajoutez une référence de projet au projet de correctif du runtime dans votre solution.

Cliquez avec le bouton droit sur la référence, puis, dans la fenêtre Propriétés , appliquez ces valeurs.

Propriété Valeur
Copie locale True
Copier les assemblys satellites locaux True
Sortie de l’assembly de référence True
Lier les dépendances de la bibliothèque Faux
Entrées de dépendance de la bibliothèque de liens Faux

Étape 5 : configurer le projet de Packaging

Pour configurer le projet de Packaging, procédez comme suit :

  1. Dans le projet d’empaquetage, cliquez avec le bouton droit sur le dossier applications , puis choisissez Ajouter une référence dans le menu déroulant.
  2. choisissez le projet de fibres discontinues Lanceur et votre projet d’application de bureau, puis choisissez le bouton OK .
  3. sélectionnez les Lanceur de fibres distantes et le projet d' Application de bureau , puis cliquez sur le bouton Ok. si le code source de l’application n’est pas disponible, sélectionnez uniquement les fibres discontinues Lanceur projet.
  4. dans le nœud Applications , cliquez avec le bouton droit sur l’application Lanceur de fibres discontinues, puis choisissez définir comme Point d’entrée.

Ajoutez un fichier nommé config.json à votre projet de Packaging, puis copiez et collez le texte JSON suivant dans le fichier. Affectez à la propriété action de package la valeur contenu.

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

Fournissez une valeur pour chaque clé. Utilisez ce tableau comme guide.

Array key Valeur
applications id Utilisez la valeur de l' Id attribut de l' Application élément dans le manifeste du package.
applications executable Chemin d’accès relatif au package à l’exécutable que vous souhaitez démarrer. Dans la plupart des cas, vous pouvez récupérer cette valeur à partir de votre fichier manifeste de package avant de le modifier. Il s’agit de la valeur de l' Executable attribut de l' Application élément.
applications workingDirectory Facultatif Chemin d’accès relatif au package à utiliser comme répertoire de travail de l’application qui démarre. Si vous ne définissez pas cette valeur, le système d’exploitation utilise le System32 répertoire comme répertoire de travail de l’application.
processus executable Dans la plupart des cas, il s’agit du nom du executable configuré ci-dessus avec le chemin d’accès et l’extension de fichier supprimés.
définitions dll Chemin d’accès relatif au package à la DLL de correction à charger.
définitions config Facultatif Contrôle le comportement de la DLL de correction. Le format exact de cette valeur varie en fonction de la correction, car chaque correction peut interpréter cet objet « BLOB » comme il le souhaite.

Une fois que vous avez terminé, votre fichier ressemble à config.json ce qui suit.

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

Notes

Les applications processes clés, et fixups sont des tableaux. Cela signifie que vous pouvez utiliser le config.jssur un fichier pour spécifier plusieurs DLL d’application, de processus et de correction.

Déboguer un correctif du Runtime

dans Visual Studio, appuyez sur F5 pour démarrer le débogueur. la première chose qui commence est l’application de fibres discontinues Lanceur qui, à son tour, démarre votre application de bureau cible. Pour déboguer l’application de bureau cible, vous devez effectuer un attachement manuel au processus de l’application de bureau en choisissant Déboguer->attacher au processus, puis en sélectionnant le processus d’application. Pour autoriser le débogage d’une application .NET avec une DLL de correction du runtime natif, sélectionnez types de code managé et natif (débogage en mode mixte).

Vous pouvez définir des points d’arrêt en regard de lignes de code dans le code de l’application de bureau et le projet de correction du Runtime. Si vous n’avez pas le code source pour votre application, vous pouvez définir des points d’arrêt uniquement en regard de lignes de code dans votre projet de correction du Runtime.