1

NuGetを介してソースコード変換として展開したいWPFコントロールがあるとします。

コントロールには、UserControl.xaml.csとUserControl.xamlの2つのファイルが関連付けられています。

NuGetを介して展開すると、ターゲットプロジェクトのファイルを取得しますが、ソリューションエクスプローラーに階層構造がありません。これは、NuGetが.csprojファイルにDependentUponプロパティを追加する方法を認識していないためです。

回避策はありますか?この機能はNuGetのロードマップに含まれていますか?

ありがとうタル

4

1 に答える 1

3

答えは Powershell です。具体的には、NuGet パッケージの /tools フォルダー内に配置されている場合、インストール時に自動的に実行される Install.ps1 ファイルです。トリックを行うコードは次のとおりです。

    param($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") | Out-Null
    }

    $project.Save()

Visual Studio インターフェイスですぐに変更が表示されない場合がありますが、プロジェクトをアンロード/再ロードするか、閉じる/開くと表示されます。

于 2013-03-26T19:12:22.600 に答える