2010-05-31 4 views
8

VS2008 Professional (웹 배포 프로젝트 포함)에서 C# ASP.NET 3.5 응용 프로그램의 세 가지 버전을 프로그래밍하는 가장 좋은 방법을 알고 싶습니다. Light, Pro 및 Ultimate 버전 (또는 버전)이 있습니다. 현재 구성 관리자에 세 가지 빌드 버전이 모두 포함 된 솔루션을 하나씩 넣었으며 코드 전체에 전 처리기 지시문을 사용했습니다 (약 1 만 줄의 코드에서 약 20 개의 구조가 있으므로 감시 할 수 있음) :Light, Pro, Ultimate를 하나의 솔루션으로 프로그래밍하는 방법

#if light 
//light code 
#endif 
#if pro 
//pro code 
#endif //etc... 

몇 시간 동안 stackoverflow에서 읽었으며 어떻게 발생하는지 생각했습니다. Microsoft는 다른 Windows 버전에서도이 작업을 수행하지만 예상 한 바를 찾지 못했습니다. 전처리 지시어가 악의적 인 지에 관해 많은 논의가 있습니다. 내가 그 # 경우 - 지시와 같은 어떤

은 다음과 같습니다

  • 차이의 병렬 코드가 그래서 난 6 개월 후 다른 버전의 코드를 이해
  • 및 특별한 이점은 고객에게 다른 버전 의 컴파일 된 코드를 에게 제공하지 않는 것입니다.

오랜 설명, 반복되는 질문 : 가장 좋은 방법은 무엇입니까?

답변

7

기능을 사용합니다. 왜 ?

  1. 하나만 배포하면됩니다.
  2. 세 가지 버전을 빌드하고 테스트하는 대신이 장치를 훨씬 쉽게 테스트 할 수 있습니다.
  3. 사용자는 업그레이드하고 새 라이센스를 보내면됩니다. 그들은 업그레이드/재설치 할 필요가 없습니다.

당신은 당신의 고객이 실제로 지불하지 않은 (그리고 단순히 적절하게 보안 라이센스 키를 통해 활성화 할 수 있습니다) 솔루션을 배포하는 우려에 대해이를 무게해야합니다.

+0

고마워요. 나는 라이센스 키 외에도 많은 것을 읽었습니다. 현재 나의 의견은 모든 것을 복잡하게 만들고 해커가 쉽게 회피 할 수있는 라이센스/난독 화에 시간을 투자하는 것보다 새로운 기능을 개발하는 데있어 많은 노력을 기울이는 것입니다. 이 응용 프로그램은 기업에서 사용되는 ASP.NET 응용 프로그램이므로 - 각 회사에 올바른 버전 (Light, Pro ..)을 보내고 - 으로 청구 - 라이센스 끝 부분에 알림이 표시됩니다 (또한 클라이언트에게 전화 함) - 갱신하지 않으면 시한 폭탄이 실행을 중단 함 - 갱신시 지연 시간 초과와 함께 새 앱을 보냅니다 – Henry99

0

나는 기본 클래스와 기능을 정상적으로 만들 것을 권하고 싶지만 에디션과 관련된 해당 mathod를 오버라이드 할 수있다.

그런 다음 해당 메서드를 재정의하는 light/pro/ultimate edition 어셈블리를 만듭니다.

그런 다음 에디션에 따라 올바른 재정의 유형을 생성하는 팩토리가 필요합니다. 여기

당신은 내부 접근과 협력 에디션 - assemblys 볼 코드 어셈블리 내부 만들 수

I/비활성화를 다른 라이선스 런타임 동안의 차이점을 관리하고 사용하도록 유혹 할 것
2

첫 번째 생각은 소프트웨어를 다양한 모듈 (프로젝트/어셈블리)로 분할 한 다음 솔루션에 각 버전마다 하나씩 세 가지 설치 프로젝트를 만드는 것입니다. 설치 과정에서 필요한 모듈 만 포함시킵니다.

"side-by-side"코드는 느슨 할 것이지만 IMHO는 유지 보수가 가능한 코드 대신 복잡한 방법을 만듭니다.유형에 더 많은 기능을 제공하거나 클래스를 파생하려면 확장 메소드를 사용하십시오.

관련 문제