2009-10-15 2 views
2

요약하면 커넥터 원본을 수정하고 Windows에 설치하기 위해 수행해야하는 단계는 무엇입니까?MySQL Connector의 소스 코드를 수정하고 PC에 어떻게 설치합니까?

MySQL Connector/.NET 버전 6.1.2가 설치되어 있지만 모든 DateTime에 '0000-00-00'값이있는 예외가 발생합니다. 이 예외는 내 응용 프로그램을 손상시킵니다.

해결책으로 커넥터의 소스 코드를 다운로드하고 예외를 변경하여 예외를 throw하는 대신 '0001-01-01 00:00:00'을 반환합니다. 코드를 수정하고 심지어 DLL을 컴파일 할 수 있었지만 (참고 : ConnectorNet에 대한 어셈블리 참조를 주석 처리했습니다), 컴퓨터에 DLL을 설치하는 방법을 알 수 없습니다. 필자는 사용자 정의 DLL이 강력하게 입력되지 않기 때문에 전역 어셈블리 캐시에서 DLL을 간단히 바꿀 수는 없습니다.

요약하면 커넥터 원본을 수정하고 Windows에 설치하기 위해 수행해야하는 단계는 무엇입니까?

감사합니다.

+0

나는 여기와 같은 배에 타고있다. mysql 커넥터에는 근본적인 결함이있다. 복잡한 쿼리에서 고유 한 이름을 생성하지 못합니다. 나는 오픈 소스를 다운로드했고, 변경 사항이 있어야한다고 생각하는 부분을 편집했지만 빌드하는데 문제가 있습니다. 수정 된 .dll 파일을 올바르게 수정하고 배포 할 수 있습니까? –

+0

@Travis 보자. 3 년이 되었으니, 내 기억이 정말 희미하다. 나는 결국 그것을 만들 수 있었다고 생각합니다. MonoDevelop를 다운로드하고 해당 도구에서 솔루션을 열어 보았습니다. 서명 된 어셈블리가되는 프로젝트/솔루션의 속성을 제거해야 할 수도 있습니다. 아마 어셈블리 속성에서 뭔가를 제거했습니다. 결국, 이것이 개인적인 용도로만 사용된다면, 어셈블리에 서명하지 않는 것이 좋습니다. 그렇지 않으면, MySQL Connector 프로젝트에 패치를 제출하고 (어떻게?) 변경 사항을 업 스트림에 포함시켜야합니다. –

+0

나는 실제로 그것을 끝내었다. 미니 튜토리얼/Q & A를 보시면됩니다 : http://stackoverflow.com/q/12944570/1026459. 비록 내가 지적한대로, 왜 당신이 로컬/개인적으로 만 사용하려고 할 때 서명하기 때문에, 나는 그것을 넘는 것처럼 보이는 해결 방법을 찾았지 만, 나는 서명 할 필요가 없었습니다. 버그 신고서를 제출했지만 2015 년까지는 볼 수 없을 것입니다. 답변 해 주셔서 감사합니다. –

답변

1

원래 개인 키가 필요합니다.

GAC의 어셈블리에는 '강력한 이름'이 있으며 암호화 된 해시가 그 일부입니다.

개인 키의 소유자 만이 공개 키 토큰 (디지털 서명)을 사용하여 어셈블리를 만들 수 있습니다.

새 DLL에 서명하려면 키 쌍 (.snk 또는 .pfx 파일)이 필요합니다. 그렇지 않으면 DLL을 사용하는 응용 프로그램을 다시 컴파일해야합니다.

1

.NET 커넥터를 업데이트하는 것이 좋습니다. 더 나은 이유는 왜 예외가 던져지고 있는지 알아 보는 것입니다.

0000-00-00의 날짜를 삽입 할 때 예외가 발생하면 MySQL의 서버 NO_ZERO_DATE 서버 모드 옵션을 비활성화하는 것이 좋습니다.

+0

.NET Connector를 업데이트하는 것이 좋지 않을 수도 있음을 알고 있습니다. 그러나 커넥터에서 예외가 발생하고 유효하지 않은 날짜를 제거하기 위해 데이터베이스를 업데이트 할 능력이나 액세스 권한이 없을 수 있습니다. –

관련 문제