Silverlight ViewBase в отдельной сборке - возможно? - PullRequest
2 голосов
/ 21 сентября 2009

У меня есть все мои представления в проекте, наследуемые от класса ViewBase, который наследуется от UserControl. В моем XAML я ссылаюсь на это так:

<f:ViewBase x:Class="Forte.UI.Modules.Configure.Views.AddNewEmployeeView"
    xmlns:f="clr-namespace:Forte.UI.Modules.Configure.Views"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

Работает нормально.

Теперь я переместил ViewBase в другой проект (чтобы я мог ссылаться на него из нескольких проектов), поэтому я ссылаюсь на него как:

<f:ViewBase x:Class="Forte.UI.Modules.Configure.Views.AddNewEmployeeView"
    xmlns:f="clr-namespace:Forte.UI.Modules.Common.Views;assembly=Forte.UI.Modules.Common"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

Это прекрасно работает, когда я запускаю из IDE, но когда я запускаю тот же sln из MSBuild, выдает предупреждение:

"H: \ dev \ ExternalCopy \ Code \ UI \ Modules \ Configure \ Forte.UI.Modules.Configure.csproj" (цель по умолчанию) (10:12) -> (Цель ValidateXaml) -> H: \ dev \ ExternalCopy \ Code \ UI \ Modules \ Configure \ Views \ AddNewEmployee \ AddNewEmployeeView.xaml (1,2,1,2): предупреждение: тег 'ViewBase' не существует в пространстве имен XML 'пространство имен clr: Forte.UI.Modules.Common.Views, сборка = Forte.UI.Modules.Common»

.

Тогда не получается с:

"H: \ dev \ ExternalCopy \ Code \ UI \ Modules \ Configure \ Forte.UI.Modules.Configure.csproj" (цель по умолчанию) (10:12) -> (Цель ValidateXaml) -> C: \ Program Files \ MSBuild \ Microsoft \ Silverlight \ v3.0 \ Microsoft.Silverlight.Common.targets (210,9): ошибка MSB4018: задача «ValidateXaml» неожиданно завершилась неудачей. \ r C: \ Program Files \ MSBuild \ Microsoft \ Silverlight \ v3.0 \ Microsoft.Silverlight.Common.targets (210,9): er ror MSB4018: System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта. \ r C: \ Program Files \ MSBuild \ Microsoft \ Silverlight \ v3.0 \ Microsoft.Silverlight.Common.targets (210,9): er ror MSB4018: в MS.MarkupCompiler.ValidationPass.ValidateXaml (строковое имя файла, сборка [] сборка лежит, сборка вызывает ассемблер, журнал TaskLoggingHelper, логическое значениеThThrow) C: \ Program Files \ MSBuild \ Microsoft \ Silverlight \ v3.0 \ Microsoft.Silverlight.Common.targets (210,9): er ror MSB4018: в Microsoft.Silverlight.Build.Tasks.ValidateXaml.XamlValidator.Execute () \ r C: \ Program Files \ MSBuild \ Microsoft \ Silverlight \ v3.0 \ Microsoft.Silverlight.Common.targets (210,9): er ror MSB4018: в Microsoft.Silverlight.Build.Tasks.ValidateXaml.XamlValidator.Execute () \ r C: \ Program Files \ MSBuild \ Microsoft \ Silverlight \ v3.0 \ Microsoft.Silverlight.Common.targets (210,9): er ror MSB4018: в Microsoft.Silverlight.Build.Tasks.ValidateXaml.Execute () \ r C: \ Program Files \ MSBuild \ Microsoft \ Silverlight \ v3.0 \ Microsoft.Silverlight.Common.targets (210,9): er ror MSB4018: в Microsoft.Build.BuildEngine.TaskEngine.ExecuteInstantiatedTask (EngineProxy engin eProxy, элемент ItemBucket, TaskExecutionMode howToExecuteTask, задание ITask, логическое значение и TaskResult)

Есть идеи, что может быть причиной такого поведения?

Использование Silverlight 3

Вот урезанная версия файла MSBuild, который не в состоянии собрать sln, который прекрасно собирается в IDE (извините, не удалось получить его для форматирования здесь):

<? Xml version = "1.0" encoding = "utf-8"?> Конфигурация = отладка

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 15 апреля 2010

Пока что я нашел единственный способ обойти это - ссылаться на реальную сборку, а не на проект. Это немного странно, у кого-нибудь есть идея получше?

...