質問

configsに到達するためにApplication.UserAppDataPathを使用すると、ArgumentExceptionが「パスに不正な文字」を持っています。
Microsoft IT ISバグではなく、機能;

fileversionInfo.productVersion(そしてapplication.productVersionおよびApplication.UserAppDataPath内で)不正文字を取得する方法は、アセンブリにAssemblyFileVersionを持つこともできます。 AssemblyFireDになる値はWin32リソースverbatimにコピーされ、AssemblyVersionに渡す値を上書きします。この動作は設計によるものです。

SO COMPLYSINGINFO.CSで[Assembly:AssemblyFirefersion( "...")]をコメントすることで、この例外を解決できます。

問題はです。 WinFormsコントロールでいくつかの.dllを書いています。このパスを入手するための最も簡単なデザインは、Application.UserAppDataPathを使用することです。ただし、Application.UserAppDataPathが使用されている場合、このライブラリを使用する開発者は、それらの.exeファイルに対してAssemblyFireversionを持つことができません。 (AssemblyFireversionがデフォルトでAssemblyInfo.csにあります)

また、Microsoftによる情報は、AssemblyFileVersionを使用する必要があり、誰かが使用しないでください。だから私は実際には、この図書館のユーザーからそれを尋ねることはできません。

そのような奇妙な状況には理由や論理がありますか? そのような問題なくApplication.UserAppDataPathパスを取得するためのより良い回避策とは何ですか?

AssemblyFireversionとApplication.UserAppDataPathが例外をスローし、アプリケーションは機能し、このパスを

で入手できます。
string path = ConfigurationManager.OpenExeConfiguration(
            ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
.

設定ファイルはあり、問題ありません。しかし、確かに、それは醜い方法です。

役に立ちましたか?

解決

その投稿を正しく読んだ場合は、違法なchar( '*')でAssemblyFileVersionを使用する必要があります。

適切にそれは「これがバグであると信じているのであれば」で終わる....

あなたはエラーを再現しました、そして現実的なシナリオだったのですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top