2013-06-05 5 views
0

기본적으로 나는 모든 프로젝트에서 사용하는 몇 가지 공통된 기능을 가진 작은 라이브러리를 개발했습니다. 일부 정치적인 이유로 인해 해당 라이브러리의 일반 이름 (네임 스페이스 및 어셈블리 이름 포함)을 선택할 수 없습니다. 대개 기업 이름을 포함해야합니다 (예 : Enterprise.ProjectName.XXX.YYY).네임 스페이스와 어셈블리 이름을 동적으로 변경하십시오.

지금 당장은 내 라이브러리 복사본을 만들고 Visual Studio로 수동으로 네임 스페이스의 이름을 바꾸고 마지막으로 전체를 다시 컴파일합니다. 그럼 내 질문은 다음과 같습니다. 어셈블리를 입력으로 사용하는 작은 프로그램을 만들 수 있습니까? 모든 네임 스페이스의 이름을 MyLibrary.XXX.YYY에서 Enterprise.ProjectName.XXX.YYY으로 변경하고 어셈블리 이름을 변경 하시겠습니까?

따라야 할 단계는 무엇입니까? 어셈블리를 생성

[편집]

자동으로 많은 작업으로 보인다. 나는 지금까지했던 것처럼 resharper 및/또는 CTRL + ALT + F를 사용할 것입니다. 답변 주셔서 감사합니다 ...

답변

1

일부 옵션 :

당신의 새로운 프로젝트에 라이브러리의 전체 소스 코드를 복사하는 경우
  1. , 당신은 "네임 스페이스를 조정"하는 ReSharper에서 같은 리팩토링 도구를 사용할 수 있습니다. 이것은 매우 빠르고 안전한 리팩토링입니다.

  2. 내부적으로 명명 된 어셈블리를 보내지 않으려면 빌드 후 단계에서 ILMerge을 사용하여 내부 어셈블리를 '숨길'수 있습니다. 이것은 바이너리 출력 디렉토리의 최종 어셈블리 이름에 대한 인식 문제 일 경우 실행 가능합니다.

  3. 내부 라이브러리를 다른 제 3 자 종속성과 다르지 않은 것으로 정치적 수준에서 문제를 다루십시오. 그렇다면 명명은 더 이상 문제가되지 않습니다. 이 기능은이 라이브러리의 소스 코드를 여러 클라이언트에 제공하는 경우 다른 클라이언트에게 '공유 된'코드의 완전한 소유권을 부여하지 않기 때문에 다른 문제를 해결할 수 있습니다. 그렇지 않으면 잠재적으로 네임 스페이스에 엔터프라이즈 이름을 갖고있어 명확하게 소유되어 있으므로 다른 클라이언트의 프로젝트에서 '공유 된'코드를 사용할 수 없다고 주장 할 수 있습니다.

3

Mono의 Cecil 프로젝트를 사용하여 어셈블리를 분해하고 각 유형을 검사하고 이름을 바꾸거나 새 네임 스페이스로 형식을 다시 만들고 결과 어셈블리를 생성 할 수 있습니다.

즉, 코드베이스 내에 rename namespaces correctly을 허용하는 Resharper와 같은 도구를 사용하는 것이 더 간단 할 수 있습니다.

관련 문제