2010-04-19 11 views
28

내 응용 프로그램에서 내부 로깅을 처리 할 클래스를 작성했습니다. 이제이 클래스를 또 다른 완전히 새로운 프로젝트에서 사용하고 싶습니다.여러 프로젝트 사이에 C# 클래스 소스 코드 공유

파일을 새 프로젝트 폴더로 간단하게 복사 할 수 있지만 유지 관리 할 사본 하나만 갖고 싶습니다. 모든 변경 사항이 시간 경과에 따라 두 프로젝트에 모두 적용됩니다.

필자는 "기존 파일 추가"기능을 사용할 수 있지만 다음 개발자가 파일이 필요하다는 것을 알 수 있도록 파일을 어디에 두어야합니까? 나는 한 번 "공유"폴더를 가지고 있지만이 폴더는 다음 개발 컴퓨터로 가져 오지 못했습니다.

새 유지 관리 담당자에게 가장 적합하고 프로젝트에서 끊어진 링크의 위험을 최소화 할 수 있도록 구성하는 가장 좋은 방법은 무엇입니까?

+1

정말 소스 레벨 공유가 C#에서는 불가능하다고 말해 주시겠습니까? –

+0

@Pavel :이 문제는 C# 특정 솔루션을 찾고 있었지만 실제로는 C#과 관련이 없습니다. 프로젝트의 단일 파일이 나머지 파일과 함께 전송되지 않은 다른 폴더에 있기 때문에 이미 하나의 파일이 누락 된 상황이 발생했습니다. – hultqvist

+0

찾고있는 내용에 대한 정확한 답변은 아래 jorgen의 게시물에서 확인할 수 있습니다. – user912447

답변

25

이 클래스가 포함 된 라이브러리 프로젝트를 만들려면이 프로젝트에 대한 참조 만 추가하면됩니다.

옵션이 없다면 "오른쪽 클릭 -> 기존 항목 추가 -> 링크로 추가"를 사용할 수 있습니다. 이렇게하면 코드 복사본이 하나만 있지만 여러 프로젝트에 존재할 수 있습니다.

+0

여기에서 살펴보실 수 있습니까? http://stackoverflow.com/questions/21301360/share-properties-from-child-app-to-base-project – Goofy

5

로깅 코드를 별도의 어셈블리로 분할하십시오.

그런 다음 해당 로거를 사용해야하는 프로젝트에 해당 어셈블리를 포함 할 수 있습니다.

모든 것이 잘 유지되므로 각 복사본에 대해 걱정할 필요없이 한 세트의 코드 만 유지하면됩니다.

1

이 클래스가 포함 된 새 어셈블리를 만듭니다.

다른 모든 프로젝트는이 어셈블리를 참조하고 그 클래스를 사용할 수 있습니다.

10

공유 할 클래스 라이브러리가 가장 좋은 솔루션입니다.

하지만 VS 프로젝트에 파일을 복사하는 대신 링크로 추가 할 수 있습니다. 이렇게하려면 기존 항목 추가 대화 상자의 추가 버튼에서 드롭 다운을 사용하십시오.

6

예를 들어, 동일한 어셈블리의 동시 32 비트 및 64 비트 빌드 (네이티브 코드에 의존하는 경우 필요합니다)와 같이 소스 코드를 공유해야하는 경우 이 스레드에 주어진 답을 사용 How do you share code between projects/solutions in Visual Studio?

(' "링크"두 프로젝트 사이에 코드 파일'을 찾아보십시오.)

1

는 모든에 대한 링크로 파일을 추가, 고유 네임 스페이스의 클래스를 넣어 프로젝트를 사용해야합니다. 클래스를 사용할 고유 한 네임 스페이스에 대해 using 문을 배치했는지 확인하십시오. 그렇지 않으면 사용할 때마다 완전히 정규화해야합니다. 이와 같은 상황에서 나는 이것이 프로젝트간에 공유하고 싶은 코드의 일부인 불필요한 cross-assemply 참조를 생성하지 않기 때문에 assemply보다 훨씬 바람직하다고 생각합니다.

0

버전 시스템을 사용하여이 작업을 수행 할 수도 있습니다.

일반적으로 솔루션 및 주 프로젝트로 디렉토리를 만든 다음이 디렉토리를 SVN에 커밋합니다. 그런 다음 모든 공유 라이브러리는 svn : external을 사용하여 링크되므로 모든 프로젝트가 동일한 솔루션 디렉토리에 있습니다.

누구든지 커밋하면 모든 외부 종속성이있는 작업 솔루션을 체크 아웃 할 수 있습니다.

관련 문제