Этот вопрос отличается от вопросов, размещенных здесь и здесь , хотя названия одинаковы.
Проблема возникает периодически. Ошибка всегда возникает, если проект был очищен или собирается из свежей кассы. Немедленное повторное нажатие сборки обычно приводит к успешной сборке. Трассировка стека, которую я получаю:
error MSB4018: The "CreateRiaClientFilesTask" task failed unexpectedly.
System.AppDomainUnloadedException: Attempted to access an unloaded AppDomain.
at System.IDisposable.Dispose()
at Microsoft.ServiceModel.DomainServices.Tools.CreateRiaClientFilesTask.GenerateClientProxies()
at Microsoft.ServiceModel.DomainServices.Tools.CreateRiaClientFilesTask.ExecuteInternal()
at Microsoft.ServiceModel.DomainServices.Tools.RiaClientFilesTask.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.d__1c.MoveNext()
Проблема также периодически возникает во время обычных циклов редактирования-сборки-выполнения, и иногда требуется перезапуск Visual Studio, чтобы заставить его работать в этих случаях.
Проблема возникает как в MSBuild, так и в Visual Studio 2010. У меня установлены все последние обновления (WCF RIA Services SP2). Это произошло при использовании инструментов Silverlight 4, и обновление до Silverlight 5 не решило проблему. Проблема также все еще возникает в бета-версии VS 11.
Мне не удалось изменить порядок сборки, как описано здесь(ссылка из здесь), поскольку MSBuild жалуется на циклическую зависимость, а Visual Studio говорит, что я не могу ссылаться на проект, отличный от Silverlight, из проекта Silverlight. С этой страницы я также попытался перейти по этой ссылке и изменил версию ToolsVersion по умолчанию с 2.0 на 4.0 в реестре.
Я определенно использую 32-разрядную версию MSBuild, так как попытка использовать 64-разрядную версию завершается неудачей с невозможностью Hydrate модели Entity Framework. Я также не использую переключатель /m для параллельной сборки.
Первоначально проект представлял собой веб-проект (который содержит сайт, на котором находится элемент управления Silverlight, сервисы RIA и содержит бизнес-логику) и проект Silverlight. Изменение этого на 3 проекта (с библиотекой классов, содержащей логику) не имеет никакого значения.
Следующее, что я планирую попробовать, — это отделить проект, в котором размещается служба RIA, от проекта, в котором размещено приложение Silverlight, но это не идеально для нас (и я даже не уверен, что это сработает).