首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Application.UserAppDataPath奇怪行为

Application.UserAppDataPath奇怪行为
EN

Stack Overflow用户
提问于 2011-05-22 21:59:00
回答 1查看 1.2K关注 0票数 2

当我使用Application.UserAppDataPath来吐露信息时,我发现了一个ArgumentException“路径中的非法字符”。

根据Microsoft it 不是一个错误,而是一个特征;

在FileVersionInfo.ProductVersion中(因此在Application.ProductVersion和Application.UserAppDataPath中)获取非法字符的唯一方法是程序集中还有AssemblyFileVersion。传递到AssemblyFileVersion的值将逐字复制到Win32资源,并重写传递给AssemblyVersion的值。这种行为是故意的。

因此,通过注释程序集:AssemblyFileVersion(“.”)在AssemblyInfo.cs中,可以解决此异常。

问题是:我正在用winforms控件编写一些.dll。获得这个路径的最简单的设计是使用Application.UserAppDataPath。但是如果使用Application.UserAppDataPath,那么使用这个库的开发人员就不能为他们的.exe文件提供AssemblyFileVersion。(默认情况下,AssemblyFileVersion在AssemblyInfo.cs中)

而且,我也找不到微软公司的任何信息,即使用AssemblyFileVersion可以阻止我的应用程序,也没有人应该使用它。所以我,实际上,不能问这个图书馆的用户。

在这种奇怪的情况下,有什么理由或逻辑吗?没有这样的问题,获得Application.UserAppDataPath路径更好的方法是什么?

虽然我有AssemblyFileVersion和Application.UserAppDataPath会抛出异常,但是应用程序可以工作,我可以通过这个路径

代码语言:javascript
复制
string path = ConfigurationManager.OpenExeConfiguration(
            ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;

配置文件在那里,没有问题。但是,当然,这是一种丑陋的方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-22 22:18:56

如果我正确地阅读了Connect上的那篇文章,那么您必须使用AssemblyFileVersion和一个非法的字符('*')。

恰当地以“如果你仍然相信这是一个错误”结尾.

您复制错误了吗,这是一个现实的场景吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6091093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档