"Open in Expression Blend ..." отсутствует для проектов WPF - PullRequest
1 голос
/ 27 декабря 2010

У меня проблема. Когда я создаю проект WPF и хочу увидеть ссылку "открыть в Выражение "смесь" - это не так, как в проекте Silverlight. Я могу использовать ссылку "открыть с", чтобы получить доступ к смеси, а затем открыть смесь и работать оттуда обойти). Тем не менее, из поиска в интернете я обнаружил, что смесь выражения должна быть установлена ​​перед Visual Studio (а не наоборот), чтобы увидеть «открытый в выражении» blend "с проектом wpf. Это происходит в Windows 7 x64 OS и x32 OS. Я также нашел при работе с «regedit» x64 и x32 настроены по-разному в отношении смешивания выражений.

Кто-нибудь, пожалуйста, помогите исправить эту проблему.

1 Ответ

2 голосов
/ 28 декабря 2010

Кажется, что эта функция просто недоступна для проектов WPF.Когда это работает, и это не всегда работает, это работает только в проектах Silverlight.Однако то, что делает «Открыть в Expression Blend ...», не очень сложно, поэтому вот макрос Visual Studio, который займет его место.

Public Sub OpenInExpressionBlend()
    Dim blendPath As String = Nothing
    Dim key As String = "SOFTWARE\Microsoft\Expression\Blend\VS"
    Dim registryKey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(key)
    If Not registryKey Is Nothing Then
        blendPath = registryKey.GetValue("BlendLaunchPath")
        registryKey.Close()
    End If
    If blendPath Is Nothing Then
        MsgBox("Cannot find Blend", MsgBoxStyle.Exclamation, "Open in Expression Blend")
        Return
    End If
    If DTE.SelectedItems.Count <> 1 Then
        MsgBox("Not just one item selected", MsgBoxStyle.Exclamation, "Open in Expression Blend")
        Return
    End If
    Dim item As SelectedItem = DTE.SelectedItems.Item(1)
    If Not TypeOf item.ProjectItem Is ProjectItem Then
        MsgBox("Not a project item", MsgBoxStyle.Exclamation, "Open in Expression Blend")
        Return
    End If
    Dim projectItem As ProjectItem = item.ProjectItem
    Dim project As Project = projectItem.ContainingProject
    Dim file As String = projectItem.Name
    If file.Substring(file.Length - 5) <> ".xaml" Then
        MsgBox("Not a xaml file", MsgBoxStyle.Exclamation, "Open in Expression Blend")
        Return
    End If
    While TypeOf projectItem.Collection.Parent Is ProjectItem
        projectItem = CType(projectItem.Collection.Parent, ProjectItem)
        file = projectItem.Name & "\" & file
    End While
    file = """" & file & """"
    Dim projectPath As String = """" & project.FullName & """"
    Dim blendArgs As String = projectPath & " /file:" & file
    Dim process As System.Diagnostics.Process = New System.Diagnostics.Process()

& blendArgs) process.Start (blendPath, blendArgs) End Sub

Обновление:

Чтобы использовать это, добавьте макрос с помощью Macro IDE, а затем добавьте его в контекстное меню элемента проекта, например:

Инструменты ->Настройка -> Команды -> Контекстное меню: Контекстные меню проекта и решения |Элемент -> Добавить команду ... -> Категории: Макрос -> Команды: Macros.MyMacros.Personal.OpenInExpressionBlend -> ОК

Изменить выделение -> Имя: Открыть в бленде выражения ...

Переместить вниз: (переместиться ниже Открыть с помощью ...)

Примечание: команда будет зависеть от того, к какому модулю вы добавили ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...