NuGet DependentUpon文件

时间:2012-04-18 07:56:19

标签: wpf nuget

假设我有一个WPF控件,我希望通过NuGet将其部署为源代码转换。

该控件有2个与之关联的文件:UserControl.xaml.cs和UserControl.xaml。

当我通过NuGet部署它时,我获取目标项目中的文件,但它们在解决方案资源管理器中没有层次结构。这是因为NuGet不知道如何在.csproj文件中添加DependentUpon属性。

有解决方法吗?这个功能是否在NuGet的路线图中?

由于 塔尔

1 个答案:

答案 0 :(得分:3)

答案是Powershell,特别是Install.ps1文件,如果放在NuGet包中的/ tools文件夹中,它将在安装时自动执行。这里的代码可以解决这个问题:

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

    $buildProject = @([Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName))[0]  

    $file = $buildProject.Xml.Items | Where Include -eq "UserControl.xaml.cs"
    $propertyToEdit = $file.Metadata | Where Name -eq "DependentUpon"

    if (!$propertyToEdit)
    {
        $file.AddMetaData("DependentUpon", "UserControl.xaml") | Out-Null
    }

    $project.Save()

您可能无法立即在Visual Studio界面中看到更改,但如果您卸载/重新加载或关闭/打开项目,您将看到它。