문제

Application.userAppDataPath를 사용하여 구성에 도달하면 ArgumentException "불법 문자"가 있습니다. Microsoft IT 입니다 버그가 아니라 기능;

FileVersionInfo.ProductVersion에서 불법적 인 문자를 얻을 수있는 유일한 방법 (그리고 따라서 Application.ProductVersion 및 Application.UserAppDatapath에서는 어셈블리에 AssemblyFileVersion이있을 때도 있습니다. AssemblyFileVersion으로가는 값은 Win32 리소스에 복사되어 AssemblyVersion에 통과하는 값을 무시합니다. 이 행동은 디자인에 의한 것입니다.

AssemblyInfo.cs One 은이 예외를 해결할 수 있습니다.

문제는 입니다. 나는 WinForms 컨트롤을 사용하여 일부 .dll을 쓰고 있습니다. 이 경로를 얻으려면 가장 쉬운 디자인은 Application.UserAppDataPath를 사용하는 것입니다. 그러나 Application.userAppDatapath가 사용되는 경우이 라이브러리를 사용하는 개발자는 .exe 파일에 대한 AssemblyFileVersion을 가질 수 없습니다. (AssemblyFileVersion이 기본적으로 AssemblyInfo.cs에있는 동안)

또한 Microsoft의 정보를 찾을 수 없었습니다. AssemblyFileVersion을 사용하여 응용 프로그램을 브레이크해야하며 누군가는 사용해서는 안됩니다. 그래서 실제로이 도서관에서 묻지 못합니다.

이와 같은 이상한 상황에있는 이유 또는 논리가 있습니까? 이러한 문제가없는 Application.userAppDatapath 경로를 얻는 더 나은 작업은 무엇입니까?

AssemblyFileVersion 및 Application.UserAppDataPath가있는 동안 예외가 발생하면 응용 프로그램이 작동하고

를 통해이 경로를 얻을 수 있습니다.
string path = ConfigurationManager.OpenExeConfiguration(
            ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
.

구성 파일이 있고 문제가 없습니다. 그러나 확실히 그것은 못생긴 방식입니다.

도움이 되었습니까?

해결책

Connect On Post를 올바르게 읽으면 Illegal Char ( '*')로 AssemblyFileVersion를 사용해야합니다.

적절하게 "아직도 이것이 버그라고 믿는다면"....

오류를 재현 한 후 현실적인 시나리오가 있었습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top