Nuget 使用属性页创建CoApp包

Nuget 使用属性页创建CoApp包,nuget,propertysheet,nuget-spec,vsprops,Nuget,Propertysheet,Nuget Spec,Vsprops,我想创建一个CoApp包,它将只安装我部门的自定义属性表(目前它们来自Mercurial子存储库,我们希望尽可能多地删除子存储库) 属性表位于几个目录中: - build - bsii.props - vc12 - vc12.props - debug32.props - debug64.props - release32.props - release64.props - details - 32.props -

我想创建一个CoApp包,它将只安装我部门的自定义属性表(目前它们来自Mercurial子存储库,我们希望尽可能多地删除子存储库)

属性表位于几个目录中:

- 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; 
        }
    }
}
这确实创建了一个包,其中包含所有必需的文件,但没有为项目配置属性表

当我使用
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')" />


如何在包中包含所有文件并使包在项目中配置正确的属性表?

我不知道CoApp,但在普通nuget中,如果您想向项目添加属性表,而不是(区别在于在构建过程中对其进行评估时),您可以通过将属性页和以下
install.ps1
uninstall.ps1
脚本放在nuget软件包的工具/目录中来实现这一点

安装.ps1 卸载.ps1 有关仅安装单个属性页的完整nuget包,请参阅

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

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

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