2014-12-02 6 views
0

내 부서의 사용자 지정 속성 시트를 설치하는 CoApp 패키지를 만들고 싶습니다. (현재 Mercurial 하위 리포지토리에 있으며 가능한 한 많은 하위보고를 없애기를 원합니다).속성 시트가있는 CoApp 패키지 만들기

속성 시트는 몇 디렉토리에 상주 :

- build 
    - bsii.props 
    - vc12 
    - vc12.props 
    - debug32.props 
    - debug64.props 
    - release32.props 
    - release64.props 
    - details 
     - 32.props 
     - 64.props 
     - common.props 
     - debug.props 
     - release.props 

주요 속성 시트는 build\bsii.props이며 플랫폼과 구성에 따라 속성 시트의 나머지 부분을 가져 조건부 수입이있다.

패키지가 올바르게 작동하려면 모든 속성 시트 폴더 구조를 포함하고 프로젝트에 주된 속성 시트 bsii.props을 추가해야합니다.

nuget { 

    nuspec { 
     id = foundations.propertysheets; 
     version: 4.0.0.0; 
     title: Native Property Sheets; 
     ... 
    }; 

    files { 
     import_props += { 
      #destination = build\native\imports\; 
      ..\build\**\*.props; 
     } 
    } 
} 

이 실제로 필요한 모든 파일하지만 속성 시트가 ​​프로젝트에 구성되지 않은이 포함 된 패키지를 만듭니다

나는 다음과 같은 autopkg 스크립트를 시도했다.

대신 import_props: ..\build\bsii.props;을 사용하는 경우 패키지에는이 단일 파일 만 포함되지만 프로젝트에는 설치되지 않지만 CoApp에서 생성 된 다른 .props 파일은 내 참조를 포함하지 않습니다. 주요 속성 시트 :

<Import Project="..\packages\foundations.propertysheets.4.0.0.0\build\native\foundations.propertysheets.props" Condition="Exists('..\packages\foundations.propertysheets.4.0.0.0\build\native\foundations.propertysheets.props')" /> 

어떻게 모든 파일을 패키지에 포함하고 프로젝트에서 올바른 속성 시트를 구성하도록 패키지를 가져 옵니까?

답변

2

CoApp에 대해서는 잘 모르겠지만 plain nuget에서는 프로젝트에 속성 시트를 추가하고 import MSBuild targets and props files into project이 아닌 경우 (차이점은 평가 중입니다) 빌드 할 때 속성을 추가하면됩니다 다음 install.ps1uninstall.ps1 스크립트는 nuget 패키지의 tools/디렉토리에 있습니다.

install.ps1

param($installPath, $toolsPath, $package, $project) 

foreach ($config in $project.Properties.Item("Configurations").Object) 
{ 
    $propertySheet = $config.AddPropertySheet("$toolsPath\bsii.props") 
} 

uninstall.ps1

param($installPath, $toolsPath, $package, $project) 

foreach ($config in $project.Properties.Item("Configurations").Object) 
{ 
    $propertySheet = $config.AddPropertySheet("$toolsPath\bsii.props") 
    $config.RemovePropertySheet($propertySheet) 
} 

단 하나의 속성 시트를 설치하는 완전한 nuget 패키지 https://github.com/blole/visual-studio-builddir/tree/4ccf9bcf2d64d7ce1fd53768a9b5466c033fea46를 참조하십시오.