当我使用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会抛出异常,但是应用程序可以工作,我可以通过这个路径
string path = ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;配置文件在那里,没有问题。但是,当然,这是一种丑陋的方式。
发布于 2011-05-22 22:18:56
如果我正确地阅读了Connect上的那篇文章,那么您必须使用AssemblyFileVersion和一个非法的字符('*')。
恰当地以“如果你仍然相信这是一个错误”结尾.
您复制错误了吗,这是一个现实的场景吗?
https://stackoverflow.com/questions/6091093
复制相似问题