2008-11-21 3 views
1

В объявлении пространства имен XAML существует ли способ устранить неоднозначность названных сборок в зависимости от вашей текущей конфигурации?Ошибки отладки и освобождения в XAML

Я в процессе перестройки системы построения проектов. Старая система была отлаживать и освободить Ассамблеи здание отдельных каталогов, что означает следующее (примерно) будет работать нормально в верхней части XAML документа:

<Window x:Class="test.MainWindow" 
... 
    xmlns:tns="clr-namespace:TestNameSpace;assembly=SampleAssembly" 
... 

Запроса мы получили для реструктуризации является дифференцировать наш сборок, именовав их по-разному для конфигураций Debug и Release. Таким образом, наша SampleAssembly.dll, которая ранее была построена в двух отдельных каталогах, теперь состоит из двух сборок в одном каталоге: SampleAssemblyDebug.dll и SampleAssemblyRelease.dll. Есть ли способ настроить эту линию XAML для ссылки на соответствующую сборку в зависимости от конфигурации?

ответ

2

В настоящее время это невозможно, без каких-либо неприятных предкомпиляционных трюков. Однако то, что вы можете сделать, это определить атрибут уровня сборки XmlnsDefinitionAttribute на вашей сборке, а затем использовать пространство имен uri, которое вы определили в своем XAML.

Например, в вашем AssemblyInfo.cs файл, вы можете иметь что-то вроде этого:

[assembly: XmlnsDefinition("http://mytest.com", "TestNameSpace")] 

А затем в XAML:

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:test="http://mytest.com"> 
    <Grid> 
     <test:MyButton></test:MyButton> 
    </Grid> 
</Window> 

Где MyButton типа в пространстве имен TestNameSpace.

0

Настройка XmlnsDefinitionAttribute была отличной. Сборка, которую я пытаюсь загрузить в XAML, выходит из проекта CLI. Чтобы заставить XmlnsDefinition работать правильно, мне пришлось добавить ссылку на WindowsBase (сборку с пространством имён System.Windows.Markup в нем) в моем проекте CLI.

Как только у меня было это здание, он работал как шарм. Хороший совет.

Смежные вопросы