55 votes

Comment transformer une bibliothèque standard .NET en bibliothèque .NET framework ?

Je suis en train d'écrire une bibliothèque de classes pour un simple parseur en C#. Lorsque je l'ai créée, j'ai utilisé la norme .NET 2.0, mais je dois maintenant la migrer vers .NET 4.6, à la fois pour me conformer aux autres projets de ma solution et pour utiliser NUnit.

J'ai essayé de suivre les instructions dans la documentation de Microsoft mais lorsque j'essaie de sélectionner un autre cadre dans les propriétés, je ne trouve que d'autres versions standard de .NET.

Comment puis-je le migrer ? Devrai-je modifier manuellement le fichier .csproj fichier ?

0 votes

Quelle version de Visual Studio utilisez-vous ?

0 votes

Visual Studio Professional 2017

2 votes

Il est intéressant de noter que vous avez dit "maintenant je dois le migrer vers .NET 4.6 à la fois pour me conformer aux autres projets de ma solution et pour utiliser NUnit". Pourquoi avez-vous besoin de migrer ? En règle générale, NUnit peut fonctionner correctement avec .NET Standard (bien que l'assemblage hébergeant les cas de test de NUnit doive cibler net46).

58voto

Jammer Points 1940

Ouvrez le fichier de projet (.csproj) et modifiez le paramètre TargetFramework à net462

<PropertyGroup>
  <TargetFramework>net462</TargetFramework>
</PropertyGroup>

0 votes

Je n'en trouve pas csproj fichier

0 votes

Naviguez jusqu'au dossier qui contient votre projet.

1 votes

@NithinChandran : décharger le projet, faire un clic droit sur le projet et sélectionner "edit".

32voto

Kaponir Points 43

Mon expérience personnelle dans Visual Studio 2017 est que recréer le projet et ajouter les sources existantes est la méthode la plus simple, la plus sûre et la plus efficace - étant donné que le fichier csproj basé sur .Net Framework contient des éléments xml supplémentaires (par rapport au fichier basé sur Standard), il semble que la modification de "TargetFramework" ne soit pas suffisante. Vous trouverez ci-dessous une partie des différences apparaissant par défaut :


enter image description here

4 votes

Ce type a raison. Il y a beaucoup plus de changements que dans la réponse acceptée.

1 votes

C'est juste - ne pas faire comme la réponse acceptée. Vous risquez d'embrouiller votre projet et de perdre beaucoup de temps. IMHE.

1 votes

D'accord, ne vous contentez pas de changer le framework cible en xml - il y a tellement d'autres choses à faire pour "migrer" quoi que ce soit ! Supprimez le projet existant de la solution, renommez le dossier, créez un nouveau projet au même endroit avec le même nom, copiez vos fichiers, ajoutez-les au projet, ajoutez vos références. Deux minutes, super sûr, super facile.

4voto

Marko Points 2571

Si vous publiez votre bibliothèque de classes en tant que paquetage Nuget, il existe une meilleure façon de procéder. Consultez cet article :

https://weblog.west-wind.com/posts/2017/Jun/22/MultiTargeting-and-Porting-a-NET-Library-to-NET-Core-20

Fondamentalement, vous pouvez configurer votre bibliothèque de classes pour un ciblage multiple, ce qui lui permet d'être importée dans des projets .net core ainsi que dans différentes versions de .net frameworks.

0 votes

C'est une bonne chose. Cette fonctionnalité devrait être mieux connue. Je ne sais pas pourquoi MS ne la rend pas plus explicite en autorisant la multi-sélection directement dans l'interface utilisateur.

3voto

Dan Points 1

Il y a quelques étapes que j'ai suivies et qui ont fonctionné pour moi :

  1. git push votre code, afin d'avoir une solution de secours :)

  2. Décharger le projet dans VS (clic droit sur le projet et décharger)

  3. Modifier le projet dans VS (clic droit et modification)

  4. Remplacer le TargetFramework OR/AND TargetFrameworkVersion par <TargetFramework>netcoreapp2.0</TargetFramework>

  5. Changez la ligne du projet, qui est généralement la première ligne (après xml Root) en : <Project Sdk="Microsoft.NET.Sdk" >

  6. Supprimez l'importation qui est généralement la deuxième ligne (après le xml Root)

  7. Conservez vos PropertyGroups qui décrivent les options de construction, si vous le souhaitez (je veux que les miens soient personnalisés).

  8. Supprimez les références et les références de fichiers, elles ne sont pas nécessaires.

  9. Fermez le fichier et rechargez-le (clic droit).

  10. Supprimer le fichier assemblyinfo (du dossier properties) car il n'est pas nécessaire, la version de l'assemblage vient maintenant du proj

  11. Faites un clic droit sur le projet et allez dans les propriétés pour vérifier qu'il n'y a pas d'erreur dans le fichier proj. Assurez-vous qu'il n'y a pas de fautes de frappe ou de balises qui ne sont pas fermées.

  12. Construire. Si vous avez des dépendances manquantes, faites un clic droit sur le projet et ajoutez-les. - Je suppose que vous ne voulez pas les éditer dans le projet. Ou vous pouvez faire une restauration dotnet ou dotnetbulid pour les ajouter, comme vous le souhaitez.

J'espère que cela vous conviendra. Les étapes semblent nombreuses, mais elles ne sont pas si compliquées, et il s'agit d'un effort ponctuel.

0 votes

J'ai essayé et le projet ne se charge même plus. J'obtiens l'erreur "The element <#text> beneath element <Project> is unrecognized" (l'élément <#text> sous l'élément <Project> n'est pas reconnu) et je ne peux pas construire non plus.

0 votes

Il semble que vous convertissiez dans l'autre sens, de .NETFramework à ,NETStandard - dans tous les cas, il y a beaucoup de choses qui peuvent mal se passer en procédant de cette manière...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X