Application.UserAppDataPath странное поведение - PullRequest
2 голосов
/ 23 мая 2011

Когда я использую Application.UserAppDataPath для доступа к конфигам, я получаю ArgumentException «Недопустимые символы в пути».
По мнению Microsoft, это не ошибка, а функция;

Единственный способ получить недопустимый символ в FileVersionInfo.ProductVersion (и, следовательно, в Application.ProductVersion и Application.UserAppDataPath) - это когда в сборке также имеется AssemblyFileVersion.Значение, которое передается AssemblyFileVersion, дословно копируется в ресурсы Win32 и переопределяет значение, которое вы передаете AssemblyVersion.Это поведение является заданным.

Таким образом, комментируя [Assembly: AssemblyFileVersion ("...")] в AssemblyInfo.cs, можно разрешить это исключение.

Проблема в : я пишу .dll с элементами управления winforms.Самый простой способ получить этот путь - использовать Application.UserAppDataPath.Но если используется Application.UserAppDataPath, то разработчики, использующие эту библиотеку, не могут иметь AssemblyFileVersion для своих файлов .exe.(Хотя AssemblyFileVersion находится в AssemblyInfo.cs по умолчанию)

Также я не смог найти никакой информации от Microsoft, что использование AssemblyFileVersion должно тормозить мое приложение, а кто-то не должен его использовать.Так что я, на самом деле, не могу спросить об этом у пользователей этой библиотеки.

Есть ли причина или логика в такой странной ситуации?Какой лучший способ обойти путь Application.UserAppDataPath без таких проблем?

Хотя у меня есть AssemblyFileVersion и Application.UserAppDataPath выдает исключение, приложение работает, и я мог бы получить этот путь через

string path = ConfigurationManager.OpenExeConfiguration(
            ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;

Конфигурационные файлы есть и не имеют проблем.Но, конечно, это безобразный способ.

1 Ответ

3 голосов
/ 23 мая 2011

Если я правильно прочитал этот пост в Connect, вы должны использовать AssemblyFileVersion с недопустимым символом ('*').

Соответственно, это заканчивается словами "Если вы все еще верите, что это ошибка" ....

Воспроизводили ли вы ошибку, и был ли это реалистичный сценарий?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...