Share via


컴파일러 경고(수준 1) CS1699

업데이트: 2007년 11월

오류 메시지

'attribute_name' 대신 'compiler_option' 명령줄 옵션 또는 적절한 프로젝트 설정을 사용하십시오.
Use command line option "compiler_option" or appropriate project settings instead of "attribute_name"

어셈블리에 서명하려면 키 파일을 지정해야 합니다. Microsoft Visual C# 2005 이전에는 소스 코드에서 CLR 특성을 사용하여 키 파일을 지정했습니다. 이러한 특성은 더 이상 사용되지 않습니다.

Microsoft Visual C# 2005부터는 프로젝트 디자이너의 서명 페이지를 사용하거나 어셈블리 링커를 사용하여 키 파일을 지정해야 합니다.

프로젝트 디자이너의 서명 페이지를 사용하는 것이 좋습니다. 자세한 내용은 프로젝트 디자이너, 서명 페이지어셈블리 및 매니페스트 서명 관리를 참조하십시오.

방법: 강력한 이름으로 어셈블리 서명에서는 다음 컴파일러 옵션을 사용합니다.

이러한 특성은 다음과 같은 이유 때문에 사용되지 않습니다.

  • 컴파일러에서 생성된 이진 파일에 특성이 포함되기 때문에 보안 문제가 발생합니다. 다른 사용자에게 이진 파일을 배포할 때 그 안에 저장된 키도 함께 전달되기 때문입니다.

  • 특성에 지정된 경로의 기준이 출력 디렉터리 또는 IDE(통합 개발 환경)에서 변경될 수 있는 현재 작업 디렉터리였기 때문에 사용 가능성 문제가 있었습니다. 따라서 대부분의 경우 키 파일은 ..\\..\\mykey.snk와 같습니다. 또한 특성을 사용하면 프로젝트 시스템에서 위성 어셈블리에 제대로 서명하기 어렵습니다. 이러한 특성 대신 명령줄 옵션을 사용하면 출력 파일에 정보를 남기지 않고 키의 정규화된 경로 및 파일 이름을 사용할 수 있습니다. 프로젝트가 이동해도 프로젝트 시스템과 소스 코드 제어 시스템에서 전체 경로를 제대로 처리할 수 있습니다. 프로젝트 시스템에서는 프로젝트를 기준으로 키 파일의 상대 경로를 유지하면서도 컴파일러에 전체 경로를 전달할 수 있습니다. 다른 빌드 프로그램에서는 올바른 특성을 사용하여 소스 파일을 생성하는 대신 컴파일러에 적절한 경로를 직접 전달함으로써 좀 더 쉽게 출력에 서명할 수 있습니다.

  • friend 어셈블리에 특성을 사용하면 컴파일러 효율성이 떨어질 수 있습니다. 이러한 특성을 사용하면 컴파일러에서 friendship의 허용 여부를 결정해야 하는 경우에 키를 모르므로 이를 추측해야 합니다. 컴파일러에서는 컴파일이 끝날 때 키를 알게 된 후에야 추측이 맞았는지 확인할 수 있습니다. 컴파일러 옵션에서 키 파일을 지정하면 컴파일러는 friendship을 허용할지 여부를 바로 결정할 수 있습니다.

예제

다음 샘플에서는 CS1699 경고가 발생하는 경우를 보여 줍니다. 오류를 해결하려면 특성을 제거하고 /delaysign으로 컴파일하십시오.

// CS1699.cs
// compile with: /target:library
[assembly:System.Reflection.AssemblyDelaySign(true)]   // CS1699

참고 항목

작업

방법: 강력한 이름으로 어셈블리 서명

참조

프로젝트 디자이너, 서명 페이지

기타 리소스

어셈블리 및 매니페스트 서명 관리