web-dev-qa-db-fra.com

Existe-t-il des conseils sur la conversion des bibliothèques de classes .NET existantes en bibliothèques portables?

J'ai quelques bibliothèques de classes avec une quantité non triviale de code existant. Les bibliothèques de classes ciblent actuellement .NET 4.0. Existe-t-il des conseils sur la façon de convertir ces bibliothèques en bibliothèques portables? En regardant le .csproj, il ne semble pas qu'il y ait beaucoup de différences:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

et

<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Est-ce une bonne ou une mauvaise idée d'essayer de convertir une bibliothèque de classes existante en bibliothèque portable?

53

Nous avons également converti des bibliothèques existantes en bibliothèques portables et cela fonctionne très bien. Vous devez modifier le fichier de projet. Remplacez la ligne suivante:

<Import Project="..." />

avec

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

Ajouter la ligne suivante à l'intérieur d'une balise PropertyGroup

<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Et supprimez les lignes suivantes du fichier AssemblyInfo.cs

[Assembly: ComVisible(false)]
[Assembly: Guid("...")]

Après cela, Visual Studio devrait vous montrer la page à onglet "Bibliothèque" dans la page de propriétés du projet et vous pouvez modifier les cadres cibles pour la bibliothèque portable.

67
DerDani81

J'ai créé une extension Visual Studio pour automatiser cela. Il suffit de rechercher dans Visual Studio> 2012 dans l'extension pour " convertir en pcl "

Le code source est également disponible sur Github.

4
Martin Poehler

Vous pouvez supprimer le <Import Project="..." /> ligne. Ensuite, lorsque vous rechargez le projet, Visual Studio vous demandera quels frameworks cibler. Vous pouvez ensuite le modifier ultérieurement dans les propriétés du projet.

0
Owen Johnson