2012-09-16 6 views
1

저는 그래픽 사용자 인터페이스가 포함 된 C# 프로젝트를 가지고 있습니다. 이제 우리는 두 번째 하드웨어 백엔드를 얻고 있습니다. 우리가 원하는 것은 백엔드 라이브러리가 사용하고 백엔드 처리에 사용되는 클래스를 변경하기 전에 프로젝트를 컴파일하기 전에 결정할 수있는 가능성입니다. 나는 msbuild를 보았지만 이걸 어떻게 성취 할 수 있는지 잘 모르겠습니다. 그것을 할 수있는 또 다른 방법이 있습니까?Visual Studio 빌드 대상

+0

UI에서 그렇게하고 싶지 않습니까? – SLaks

+1

StructureMap과 같은 종속성 삽입 (제어 반전) 프레임 워크를 살펴 보았습니까? 그것들은 구성을 통해 사용중인 구현을 변경할 수있게하는 것을 전적인 목적으로합니다. 따라서 컴파일 타임에는 걱정할 필요가 없습니다. 실행하기 전에 변경해야합니다. 코드 변경없이 둘 사이를 쉽게 전환 할 수 있도록 백엔드 용 공통 인터페이스를 사용하고 있다고 가정합니다. –

답변

0

Dependancy Injection은 적절한 해결 방법입니다. TinyIoC과 같은 간단한 인터페이스를 구현하기 위해 배포시 적절한 .dll이 포함되어 있습니다. 잘못된 방법은 .csproj를 조건부 참조로 조정하는 것입니다. example을 참조하십시오.하지만 VS 또는 CLI에서 전환 할 수 있도록 사례의 $ (구성) 값을 기반으로하면 작동하지만 고통의 세계를 가져올 수 있습니다.

+0

컴파일 할 컴퓨터에 필요한 모든 dll이 설치되지 않은 것입니다. 백엔드 중 하나 인 NI Instruments의 DAQmx는 약 1GB가 필요하며 앞으로 몇 가지 백엔드가 추가 될 것입니다. 따라서 어떤 백엔드를 컴파일 할 것인지 선택할 수있는 Linux에서 configure 스크립트와 같은 것을 사용하는 것이 좋을 것입니다 gui. –

+0

내 친구가 나에게 그 백엔드 각각에 자신의 SDK를 설치해야한다고 언급해야한다고 말했습니다. 이렇게하면 서로 다른 SSD를 필요로하는 많은 백엔드를 얻는다면 그것은 비상식 적입니다. 그러므로 각각의 백엔드가 당신이 GUI를 컴파일하기를 원하는 프로그램을 컴파일하기 전에 결정하는 것이 좋다. –

관련 문제