2017-10-24 4 views
1

시나리오 C# VS2013 나는이 개 프로젝트 A와 프로젝트와 B와 솔루션을 가지고C#을 빌드를 기반으로 참조

프로젝트 B는 인터페이스를 허용하는 특정 환경에 상대적으로 정적 클래스가 포함되어 프로젝트 B의 클래스를 참조 이 경우 특정 환경에서 생산됩니다.

개발 환경 기반 클래스를 사용하여 프로젝트 B의 복제본을 만들고 dev 구성을 사용하여 빌드 할 때 프로덕션 버전 대신 사용하려고합니다.

어떤 식 으로든 프로젝트 A 코드베이스를 변경하고 싶지는 않습니다.

어떻게하면됩니까?

+0

#IF를 사용하십시오. msdn : https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-if – jdweng

+0

참조 가능한 [Visual Studio 프로젝트 : 한 구성에 대한 참조 만 포함하는 방법 ?] (https://stackoverflow.com/questions/1493749/visual-studio-project-how-to-include-a-reference-for-one-configuration-only) –

+0

또는 https://stackoverflow.com/ 질문/14335186/여러 구현을 가진보다 인라인 인 환경에 따라 달라지는 인터페이스 변경 중 ... "프로젝트 B의 복제본"작성에 대해 강력하게 조언합니다. 코드 복사는 대개 유지 관리 문제로 이어집니다. 대부분 IoC가 있거나없는 구성 프레임 워크를 선택하는 것이 더 나은 선택입니다. –

답변

0

비교적 쉽게 달성 할 수 있습니다. 일부 프로젝트 파일을 직접 편집해야합니다. 먼저 프로젝트 B의 클론을 작성하십시오. 새 csproj 파일을 편집기에서 열고 프로젝트 GUID를 새 프로젝트로 변경하십시오 (프로젝트 유형 Guid와 혼동하지 마십시오). 그리고 미래의 실수로 새로운 프로젝트 파일 이름도 변경되지 않도록하십시오.

프로젝트 A에서 필요한 변경 사항은 일부 환경/빌드 설정에서 조건부로 만들고 프로젝트 B 참조에서 생산 또는 개발자를 선택하는 프로젝트 B csproj 참조와 관련이 있습니다.

이하 CppSharp 프로젝트 중 하나의 프로젝트 참조 섹션 사본을 만들었습니다. CppSharp 프로젝트에 대한 프로젝트 참조는 DevelopmentBuild 환경 또는 MSBuild 속성이 false이고 DevelopmentBuild가 True로 설정된 CppSharp.Dev.csproj에 대한 참조 인 경우 CppSharp.csproj에 대한 두 가지 참조로 나뉩니다.

<ItemGroup> 
    <ProjectReference Include="..\Core\CppSharp.csproj" Condition"$(DevelopmentBuild) != 'True'"> 
     <Project>{C600C309-B2CD-1D15-DBE6-0BBDC71253A3}</Project> 
     <Name>CppSharp</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\CoreDev\CppSharp.Dev.csproj" Condition"$(DevelopmentBuild) == 'True'"> 
     <Project>{C600C309-B2CD-1D15-DBE6-0BBDC71253A4}</Project> 
     <Name>CppSharp</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\AST\CppSharp.AST.csproj"> 
     <Project>{BC4C5C41-A8AF-EBE5-5135-249C3D77B768}</Project> 
     <Name>CppSharp.AST</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\Runtime\CppSharp.Runtime.csproj"> 
     <Project>{189FF169-0498-10BC-2DCA-F5401922F0C7}</Project> 
     <Name>CppSharp.Runtime</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\..\build\vs2015\projects\CppSharp.Parser.CLI.vcxproj"> 
     <Project>{C75EB680-33C0-938E-BC2D-DA40288ECA4D}</Project> 
     <Name>CppSharp.Parser.CLI</Name> 
    </ProjectReference> 
    </ItemGroup> 
    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
+0

고마워요. 총을 털어주세요. – m12lrpv

+0

대접 받았다! 감사 !! – m12lrpv