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.

le problème est : J'écris quelques contrôles .dll avec des contrôles WinForms. La conception la plus facile pour obtenir ce chemin serait d'utiliser Application.UserAppDataPath. Mais si l'application.UserAppDataPath est utilisée, les développeurs qui utilisent cette bibliothèque ne peuvent pas avoir l'assemblageFileversion pour leurs fichiers .exe. (Tandis que l'associationFIVERVersion est dans l'associationInfo.cs par défaut)

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.

Était-ce utile?

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top