2011-03-22 11 views
3

데이터베이스 연결과 관련된 몇 가지 방법으로 public으로 선언 된 클래스 (sqlAccess)를 컴파일하려고합니다. 나는C에서 라이브러리를 컴파일하는 동안 오류가 발생했습니다.

Error 1 Friend access was granted to 'SqlAccess, PublicKey=00c8', but the  output assembly is named 'SQLAccess, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Try adding a reference to 'SqlAccess, PublicKey=00c8' or changing the output assembly name to match. c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.dll SQLAccess 

어떤 이유가 될 수 ... 다음과 같은 오류는 무엇입니까? 이미 그 이름의 방법이 있습니까? 나는 프로그래밍에 익숙하지 않아서 이것을 분명히 이해할 수 없다. 고맙습니다.

답변

0

어셈블리 이름을 sqlAccessXYZ로 변경했는데 이제는 작동합니다. 문제는 이름과 관련이 있습니다. 정확히 무슨 문제인지 모르겠지만, 지금은 문제가 해결되었습니다. 감사.

2

어셈블리/프로젝트에 고유하지 않은 이름을 지정하면 .NET이 심하게 느껴질 수 있습니다. 귀하의 경우에는 SqlAccess가 .NET 또는 참조 된 어셈블리에 이미 있어야합니다.

해결 방법은 어셈블리의 이름을 바꾸는 것입니다.

유사 문제 : Weird error in C#

6

이것은 나를 위해 일한은 : | 탭 서명 속성을 열고 . "어셈블리 서명"을 선택하고 참조 된 강력한 이름 키 파일을 확인하십시오. 프로젝트/솔루션을 저장하고 컴파일하십시오.

+0

있다고. 가능한 경우 MSDN 링크를 제공해야합니다. – Krumia

+0

이것은 나를 위해 완벽하게 작동합니다. 답변 해 주셔서 감사합니다. –

+0

나를 위해 일해주세요, 감사합니다! – gTiancai

1

SqlAccess 어셈블리에 SqlAccess에 대한 내부 액세스 권한을 부여한 참조가 있기 때문입니다. 그것은 이런 식으로 뭔가를해야합니다 [당신의 AssemblyInfo.cs에서 그것을 발견 할 것이다] :

[assembly: InternalsVisibleTo("Name of assembly goes here, PublicKey=")] 

를 컴파일 시간 동안 컴파일러는 특정의 PublicKey와 어셈블리를 찾을 수 없을 때, 당신에게 부여 된 같은 친구 액세스 '로 오류가 발생합니다 ... '. 이 문제를 해결하려면 소스 어셈블리에서 위의 특성을 제거하거나 새 공개 키를 추가하고 원본 어셈블리에서 변경해야합니다.

1

이유는이 솔루션의 특정 dll을 다시 설치하거나 업데이트해야하지만 이전 dll이 솔루션과 시스템에서 제대로 삭제되지 않아야합니다. 이 나를 위해 일을 한 이유는, 당신이 (sqlAccessXYZsqlAccess에서) 어셈블리 이름을 변경할 때이 일있어

관련 문제