나는 2008 Visual Studio에서 웹 프로젝트의 다음과 같은 두 가지 유형의 알고 있어요 :웹 사이트 프로젝트가 Visual Studio에서 서명 된 어셈블리를 참조 할 수 있습니까?
- 웹 사이트 프로젝트
- 웹 응용 프로그램 프로젝트로 서명 된 어셈블리를 참조 할 수 있습니다
웹 응용 프로그램 프로젝트 웹 응용 프로그램의 어셈블리도 동일한 키로 서명 된 상태 여야합니다. 그러나 어셈블리에 서명 할 장소가 없기 때문에이 방법은 웹 사이트 프로젝트에서 작동하지 않습니다. 어셈블리가 서버에서 동적으로 컴파일되기 때문에 이것이라고 생각하십니까?
어쨌든이 서명 된 어셈블리로 웹 사이트 프로젝트를 진행할 수 있습니까? 아니면이 웹 사이트 프로젝트를 웹 응용 프로그램 프로젝트로 변환해야합니까?
편집 : 다음과 같은 상황이 문제에 대해 해명을 요구하라고 요구했다
:
나는 Visual Studio에서 내 솔루션에 여러 다른 프로젝트에 의해 참조되고있는 클래스 라이브러리를 가지고있다. 프로젝트 중 하나는 특정 외부 사용자에게 배포 될 Windows 응용 프로그램입니다. 응용 프로그램이 올바른 어셈블리를 사용하고 있는지 확인하고 다른 사용자가 어셈블리를 사용하지 못하게하려면 (그 효과에 대한 제한 사항을 알고 있습니다) 모든 어셈블리가 서명되고 라이브러리의 모든 클래스가 선언됩니다 친구 (내부).
웹 사이트 프로젝트에서 어셈블리에 서명 할 수있는 방법이없는 것 같으며 라이브러리에서 무엇인가를 사용하려고 할 때 다음과 같은 메시지가 나타납니다. "CLASS는 'Friend'이므로이 컨텍스트에서 평가할 수 없습니다. ", 예상되는 것입니다.
다음 속성
내 클래스 라이브러리 프로젝트의 Assemblyinfo.vb의 파일 안에있는 :<Assembly: InternalsVisibleTo("OtherProject1, PublicKey=AAA...")>
<Assembly: InternalsVisibleTo("OtherProject2, PublicKey=AAA...")>
...
내 결론 :
웹 사이트를 변환하는 것이 작업을 수행하는 가장 깨끗한 방법 같은데 웹 애플리케이션으로 만들지 만, 우리 사이트는 이미 꽤 복잡해지고 다른 토론에서 지적한 바와 같이 할 시간이 조금 필요할 것입니다. 앞으로는 웹 응용 프로그램을 만드는 것이 더 나은 아이디어 일 수 있고 미래 개발을 위해 훨씬 더 융통성이있을 수 있다고 생각합니다.
서명 된 어셈블리를 참조로 추가했습니다. 어셈블리 (클래스 라이브러리)에있는 모든 것을 가져 오려고하면 다음 메시지가 표시됩니다. "CLASS는 '친구'이므로이 컨텍스트에서 평가할 수 없습니다. 이 웹 사이트의 어셈블리가 서명되지 않았으므로 기대할 수있는 것은 없습니다 (아무 것도 없기 때문에). 그 둘 모두를 일시키기 위해 할 수있는 일이 있는지 또는 이것이 웹 사이트 프로젝트의 한계에 불과하면 궁금합니다. – Michael
네, 웹 사이트에서 얻는 제한된 이점 (기본적으로 디버깅 할 사이트를 미리 컴파일 할 필요가 없음)이 이러한 종류의 고통보다 훨씬 더 중요하다는 것을 알았습니다. –