2013-06-27 2 views
0

특정 아키텍처 용으로 빌드 된 일부 기본 구성 요소와 함께 제공되는 AnyCPU로 빌드하는 일부 csproj 파일이 있습니다. 이것은 anycpu를 프로젝트에 있기 때문에 이것이를 생산하는 대신,C# csproj 파일에서 솔루션의 플랫폼을 어떻게 참조 할 수 있습니까?

<PropertyGroup> 
    <OutputPath>$(SolutionDir)\bin\$(Configuration)_$(Platform)\</OutputPath> 
</PropertyGroup> 

불행하게도 :이 파일은 같은 위치에 배치 할 필요가있다, 그래서 현재 선택된 플랫폼 및 구성에 따라 출력 디렉토리를 설정하고 싶어 $ (SolutionDir) \ bin \ Release_x64 \의 출력 디렉토리에 $ (SolutionDir) \ bin \ Release_AnyCPU의 출력 디렉토리가 생성됩니다.

이 라이브러리의 새로운 비트 별 버전을 만드는 것을 피하고 싶습니다. 난 그냥 빌드를 올바른 장소에 파일을 배치 싶습니다.

csproj는 전체 빌드를위한 플랫폼을 어떻게 알 수 있습니까?

+0

간단히 : 프로젝트에서 전체 솔루션의 플랫폼을 참조 할 수있게하려면? –

+0

@ 시몬 : 그렇습니다. 파일을 올바른 위치에 복사하기 만하면됩니다. (나는 OutputPath 만 남겨두고 올바른 위치에 복사 할 수있는 빌드 후 대상을 만들지 만 전체 솔루션의 플랫폼/구성을 통해 어떤 위치인지 알 수 있습니다.) –

+0

나는 머리가 위로 올라가지 않습니다. VS가이 시나리오를 즉시 처리 할 것이라고 생각하십시오. '.csproj' 파일을 수동으로 편집하고 MSBuild로 해킹 명령 행 비즈니스를 할 수 있습니다. 정확하게 그것이 수반하는 무엇이 나는 확신하지 않는다 (MSBuild는 정말로 나의 전문 분야가 아니다!) –

답변

2

$ (플랫폼) 값은 관리되는 프로젝트와는 완전히 관련이 없습니다. 프로젝트가 구축되는 방식이나 실행 방식에 어떠한 영향도 미치지 않습니다. 아키텍처를 결정하는 지터는 런타임에서 발생하는 것이지 빌드 시간에서는 발생하지 않습니다.

효과가있는 유일한 설정은 프로젝트 + 속성, 빌드 탭, 플랫폼 대상입니다. 이 설정 값은 $ (플랫폼)에 의해 결정되는 이 아니며이 아닙니다. 이것은 VS2010 이후 엄청난 혼란을 야기했습니다.

플랫폼 이름이 중요하지 않으므로 이제 해결책을 볼 수 있습니다. 단순히 C++ 프로젝트의 플랫폼 이름과 동일하게 만들 수 있습니다. 필요한 경우 x64 및 Win32 구성을 관리되는 프로젝트에 추가하십시오. 그리고 AnyCPU 구성은 더 이상 필요하지 않으므로 삭제하십시오. 모든 프로젝트에서 동일한 플랫폼을 사용하도록 + 구성 관리자를 구축했습니다. 문제 해결됨.

관련 문제