1

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

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

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

有解决方法吗?NuGet 的路线图中是否包含此功能?

谢谢塔尔

4

1 回答 1

3

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

    参数($installPath,$toolsPath,$package,$project)

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

    $file = $buildProject.Xml.Items | 其中包括 -eq "UserControl.xaml.cs"
    $propertyToEdit = $file.Metadata | 其中名称-eq“DependentUpon”

    if (!$propertyToEdit)
    {
        $file.AddMetaData("DependentUpon", "UserControl.xaml") | 外空
    }

    $project.Save()

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

于 2013-03-26T19:12:22.600 回答