Подтвердить что ты не робот

Теги AlternateContent, вызывающие проблемы с IDE, но не компиляторы

Я работаю над старым продуктом. Мне нужно сделать области сложного интерфейса дополнительными, основываясь на константах построения. Невозможно переместить эти регионы в элементы управления, поэтому я использую теги AlternateContent (mc: AlternateContent).

Это отлично работает при компиляции, и приложение работает как ожидалось.

Однако, IDE заявляет одну ошибку для каждого AlternateContent и прилагается Choice Tag и не загружает окно Design/preview (в VS или Blend):

The name "AlternateContent" does not exist in the namespace "http://schemas.openxmlformats.org/markup-compatibility/2006"
The name "Choice" does not exist in the namespace "http://schemas.openxmlformats.org/markup-compatibility/2006"

Я попытался, перестроил, очистил и перестроил, изменив настройки сборки между выпуском, debug, x86, x64 и перезагрузкой. Ничто не помогает. Он даже дает те же ошибки в Blend.

Я надеюсь, что это просто что-то глупое, что я делаю, и я могу это исправить; или, возможно, более новый URI пространства имен, который я должен использовать. Если я не могу разрешить ошибки, я надеюсь, что кто-то знает трюк, чтобы подавить эти ошибки в среде IDE, поэтому можете использовать его.

У меня есть полностью обновленная установка VS2013 Premium. Тем не менее, он имеет сбой на тестовой машине с VS13 CTP, а другой работает VS2012 (полностью обновлен), без каких-либо надстроек; поэтому я должен предположить, что это не проблема с установкой моего ПК.

4b9b3361

Ответ 1

Немного поздно для вечеринки, но если вы добавите тэг mc к свойству Ignorable, ошибка исчезнет. Ваш контент не будет отображаться в дизайнере, но работал у меня, когда я составлял различные варианты моего проекта.

<UserControl...
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:conditional="defined-in-assembly.cs"
    mc:Ignorable="d mc"/>

Ответ 2

Как насчет этого:

public class BuildConstants
{
    public bool IsDebug
    {
        get
        {
#if DEBUG
            return true;
#else
            return false;
#endif
        }
    }
}

и xaml:

<Application.Resources>
    <BooleanToVisibilityConverter x:Name="BooleanToVisibilityConverter"></BooleanToVisibilityConverter>
    <l:BuildConstants x:Key="BuildConstants" />
</Application.Resources>

<Grid Visibility="{Binding IsDebug, Source={StaticResource BuildConstants}, Converter={StaticResource BooleanToVisibilityConverter}}">
    <TextBlock Text="This will be visible only when DEBUG build constant is present"></TextBlock>
</Grid>