Application.UserAppDataPath Comportement étrange
-
09-09-2020 - |
Question
Lorsque j'utilise Application.UserAppDataPath pour accéder à Configs, j'ai une erreur d'argument "caractères illégaux dans le chemin".
Selon Microsoft It est pas un bug, mais une fonctionnalité;
Le seul moyen de trouver un caractère illégal dans FileVersionInfo.productsersion (et donc dans l'application.Productsersion et application.UserAppDataPath) est lorsque vous avez également lafiletsion de montage sur l'assemblage. La valeur qui va à AssemblyFileVersion est copiée sur les ressources Win32 Verbatim et remplace la valeur que vous passez à montage à montage. Ce comportement est par conception.
Donc, en commentant [Assemblage: AssemblyFileVersion ("...")] Dans AssemblyInfo.Cs, on pourrait résoudre cette exception.
Aussi, je n'ai pas pu trouver d'informations par Microsoft que l'utilisation de l'associationFIVersion devrait freiner ma demande et que quelqu'un ne devrait pas l'utiliser. Donc, en fait, je ne peux pas le demander à ces utilisateurs de la bibliothèque.
Y a-t-il une raison ou une logique dans une situation aussi étrange? Qu'est-ce qu'un meilleur travail pour obtenir Application.UserAppDataPath Sentier sans ces problèmes?
Bien que j'ai eu mon séjourfileversion et Application.userappdatapath jette l'exception, l'application fonctionne et je pourrais obtenir ce chemin à travers
string path = ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
Les fichiers de configuration sont là et n'ont aucun problème. Mais, certainement, c'est une manière laid.
La solution
Si je lisais ce post sur Connectez correctement, vous devez utiliser AssemblyFileVersion
avec un caractère illégal ('*').
Il se termine de manière appropriée avec "si tu crois toujours que ceci est un bug" ....
Avez-vous reproduit l'erreur et s'agissait-il d'un scénario réaliste?