2016-06-10 2 views
1

Visual Studio 2013 솔루션에 많은 VC 프로젝트가 있습니다. 각 프로젝트마다 대부분의 속성을 프로젝트 폴더에 속한 속성 시트 AllConfigurations.props에 보관합니다. 해당 프로젝트에 대한 프로젝트 템플릿을 만들려고합니다. 나는 zip 파일을 템플릿 .vstemplate에서 참조 할 AllConfigurations.props을 추가VC 프로젝트 템플릿에 속성 시트를 포함하는 방법

<Project TargetFileName="Test.vcxproj" File="Test.vcxproj" ReplaceParameters="true"> 
    <ProjectItem ReplaceParameters="false" TargetFileName="AllConfigurations.props">AllConfigurations.props</ProjectItem> 

을하지만이 템플릿으로 새 프로젝트를 만들 때 Visual Studio에서 오류 표시 : 프로젝트가 추가되지 않는

Unable to read the project file "Test1.vcxproj". Test1\Test1.vcxproj(76,5): The imported project "Test1\AllConfigurations.props" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.

을 해결책. 그것은 VS 템플릿에서 모든 파일의 압축을 풀기 전에 새 프로젝트를로드하려고합니다 것 같습니다.

어떻게 처리합니까?

답변

1

나는 동일한 문제가있었습니다. Visual Studio (내 경우에는 2013)가 프로젝트로 속성 시트를 처리하기 때문에 실제로 프로젝트에 속성 시트를 추가 할 수 없습니다. ProjectCollection과 두 번째 vstemplate file의 조합을 사용하여 속성 시트와 실제 프로젝트로 구성된 프로젝트를 만들 수있을 것으로 기대합니다. 그러나 훨씬 적은 노력으로 솔루션을 해킹하는 결과를 낳았습니다.

  1. 는 .vcxproj 파일을 열고

  2. <ImportGroup Label="PropertySheets" /> 당신이 추가 관심있는 속성이 포함되어 사용자 정의 속성 시트 파일을 열고처럼 보이는 첫 번째 줄을 찾을 수 있습니다. Project 요소 아래의 모든 요소를 ​​복사합니다 (포함하지 않음).

  3. (1) 단계에서 찾은 위치 바로 앞의 모든 내용을 붙여 넣으십시오.

  4. 사용자 지정 속성 시트를 참조하는 ImportGroup 요소의 하위 요소를 모두 제거하거나 제거하십시오 (이제는 <!-- <Import Project="whatever.props" /> -->이어야 함).

템플릿을 다시 첨부하고 템플릿을 설치하십시오. 이제 관심있는 속성으로 프로젝트를 생성 할 수 있어야합니다. 단점은 결과 .vcxproj가보기 싫지만 별도의 속성 시트가 ​​없지만 최소한 배포 할 수 있어야한다는 것입니다 새 프로젝트 유형에서 등록 정보를 참조하십시오.

+0

그렉, 아이디어에 감사드립니다. 불행히도, 프로젝트의 견고성이 최우선 과제이기 때문에 제 경우에는 그것을 적용 할 수 없습니다. – Nikerboker

2

다음은 사용자 속성 시트가 ​​포함 된 Visual Studio C++ 프로젝트 템플릿을 만드는 방법입니다.

  1. 은 템플릿에 수출하고 등록 정보 관리자 창에서 속성 시트를 추가 할 프로젝트를 만듭니다. 귀하의 경우에는 AllConfigurations.props 파일을 사용하십시오.
  2. 솔루션 탐색기 창에서 속성 시트 파일을 프로젝트에 추가하십시오. 파일을 템플릿 아카이브에 가져오고 새 프로젝트에 자동으로 복사하려면이 작업을 수행해야합니다.
  3. 파일 -> 내보내기 템플릿을 사용하여 프로젝트 템플릿을 내 보냅니다.마법사의 두 번째 페이지에서 템플릿을 Visual Studio로 자동 가져 오기 옵션의 선택을 취소하십시오.
  4. 템플릿 zip 파일에서 .vcxproj 파일을 추출하고 텍스트 편집기에서 엽니 다. 속성 시트 파일이 포함 된 줄을 검색하십시오. 프로젝트의 각 빌드 구성마다 하나씩 있습니다. 귀하의 경우 그들은 다음과 같아야합니다 : <Import Project="AllConfigurations.props" />. 행을 다음으로 변경하십시오. <Import Project="AllConfigurations.props" Condition="exists('AllConfigurations.props')" />. 이렇게하면 파일을 아직 사용할 수 없더라도 프로젝트를 열 수 있습니다.
  5. 파일을 저장하고 템플릿 zip 파일에 다시 추가하십시오.
  6. 복사 템플릿 \ ProjectTemplates \ 디렉토리 < 내 문서> \ Visual Studio를 버전 에 zip 파일.

Visual Studio를 닫았다가 다시 열면 새 템플릿으로 새 프로젝트를 만들 수 있습니다. 솔루션을 닫은 후 속성 시트 창에서 속성의 모든 구성 아래에 속성 시트가 ​​표시되도록 다시 열어야 할 수 있습니다. .props 파일을 새 프로젝트에서 솔루션 탐색기 창에 표시하지 않으려면 해당 파일을 제거 할 수 있습니다. 그것은 여전히 ​​재산 관리자에 사용됩니다.

+0

Paul, 답변 해 주셔서 감사합니다. 나는 똑같은 아이디어를 가지고 있었지만 마침내 그것을 거부했다. 이 추가 조건은 프로덕션에서 필요하지 않은 해킹이며, 어떤 이유로 든 필요한 .props 파일을 찾을 수 없을 때 버그를 숨길 수 있습니다. – Nikerboker

+0

@Nikerboker 전 조건부를 해결할 방법을 찾지 못했습니다. 사용자 지정 마법사가 대안으로 작동 할 수 있습니다. –