2017-08-21 1 views
-1

Je crée une bibliothèque de classes en convertissant du code à partir d'une application Windows .NET Framework 4.6.2 que j'ai téléchargée à partir de CodeProject. La bibliothèque de classes (DLL) a le framework cible de .NETStandard 1.6.La classe System.IO StreamWriter diffère entre une application Windows et une application Libarary de classe

J'ai rencontré un problème avec la classe System.IO StreamWriter n'étant pas cohérente entre les deux applications. L'image ci-dessous montre des erreurs de ligne rouge pour fileName et outputFile.Close() dans le projet DLL. Les mêmes erreurs ne se produisent pas dans l'application de Windows .:

fileName is of type String and outputFile is of type StreamWriter

Après avoir utilisé l'option « Aller à l'définiton » de Visual Studio, je trouve que la version StreamWriter dans le System.IO pour l'application de Windows, est à la fois 1) un constructeur qui prend un argument de chaîne, et 2) une méthode Close(). Ces deux fonctionnalités sont manquantes dans la version de StreamWriter pour la DLL. Donc ma question est "Puis-je d'une manière ou d'une autre" corriger "mes propriétés de projet DLL afin qu'il puisse utiliser le code C# sans changement, ou dois-je modifier le code?".

+0

Je ne suis pas d'accord que cette question est une copie exacte d'une question existante. Ma question concerne la fixation des propriétés ou la correction du code. Après avoir fait plus de recherche et de tests, j'ai constaté que j'ai probablement choisi le mauvais cadre cible pour mon application DLL. Si j'avais choisi, disons, .NET Framework 4.6.2 au lieu de .NETStandard 1.6, le code porté aurait fonctionné. Le post intitulé "Vnext Argument 1: ne peut pas convertir de 'string' en 'System.IO.Stream'" est sur "les choses sont manquantes dans le framework". J'ai probablement juste choisi le mauvais cadre. Plus de tests diront. –

+0

Donc, en effet, le problème était le cadre choisi pour mon projet de bibliothèque de classes. En le changeant en .NET Framework 4.6.2, j'ai pu transférer le code de l'application Windows sans modification. Je ne suis toujours pas d'accord que ce post est un doublon. –

Répondre

0

Vous devez modifier votre code. System.IO.StreamWriter.ctor(string) et System.IO.StreamWriter.Close() ne font pas partie des API .NET Standard 1.6.

+0

Ou choisir un cadre différent, je pense. –

+0

Modification de l'infrastructure a résolu le problème. Voir mon commentaire ci-dessus. –