Ошибка MSB4018: задача «CreateRiaClientFilesTask» неожиданно завершилась неудачно - попытка получить доступ к незагруженному домену приложения - PullRequest
5 голосов
/ 28 марта 2012

Этот вопрос отличается от вопросов, размещенных здесь и здесь , хотя названия совпадают.

Проблема возникает периодически. Ошибка всегда возникает, если проект был очищен или строится из новой проверки. Немедленное нажатие на сборку обычно приводит к успешной сборке. Полученная трассировка:

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.<ExecuteInstantiatedTask>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-битную версию завершается неудачно с невозможностью гидратировать модель структуры сущностей. Я не использую ключ / m для параллельного построения.

Первоначально проект представлял собой веб-проект (на котором размещается сайт, на котором находится элемент управления Silverlight, службы RIA и содержит бизнес-логику), и проект Silverlight. Изменение этого на 3 проекта (с библиотекой классов, содержащей логику) не имеет никакого значения.

Следующее, что я планирую попробовать, это выделить проект, в котором размещается служба RIA, отдельно от проекта, в котором размещено приложение Silverlight, но это не идеально для нас (и я даже не уверен, что это будет работать).

Ответы [ 7 ]

3 голосов
/ 02 января 2013

В моем случае это исключение было вызвано антивирусным приложением McAffee.Отключение функции «При доступе» (или «по требованию») решило проблему.

В прошлом у меня была похожая проблема с Microsoft Security Essentials, которая была решена путем добавления приведенных ниже исключений.Я подозреваю, что именно исключение папки «Временные файлы ASP.Net» потребуется для решения этой проблемы здесь.

Исключенные файлы и расположения

  • C: \ Temp \ Default \ NuGet.exe
  • C: \ Temp \ NativeImage \ NuGet.exe
  • C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Временный ASP.NET файлы
  • NuGet.exe

исключенные процессы

  • C: \ Program Files (x86) \ Common Files \ microsoftshared \ DevServer \ 11.0 \ WebDev.WebServer40.EXE
  • C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ devenv.exe
  • C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ Microsoft.VisualStudio.Web.Host.exe
  • C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe
1 голос
/ 08 апреля 2014

В нашем случае мы столкнулись с той же проблемой, о которой сообщалось в другом ответе на этот же вопрос (https://stackoverflow.com/a/14125687/223837):. McAfee странным образом вмешивался в файлы «временных файлов ASP.NET». Но в нашем случае мы не моглиотключите McAfee или измените исключенные папки из-за политики компании.

Но мы нашли другое решение: мы обновили файл machine.config (в нашем случае C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config) и добавили <compilation tempDirectory="..."/>элемент, как показано ниже:

<configuration>
    <!-- snip -->
    <system.web>
        <!-- snip -->
        <compilation tempDirectory="c:\A_FOLDER_THAT_IS_SKIPPED_BY_MCAFEE\TempASP.NETFiles\"/>
    </system.web>
    <!-- snip -->
</configuration>

(Вдохновение для этого направления решения пришло от ответа на связанный вопрос: https://stackoverflow.com/a/1255303/223837.)

1 голос
/ 26 июня 2012

Это исключение сводит меня с ума! Я также пытался очистить временную папку ASP.Net, очистить все проекты в решении, запустить VS от имени администратора и т. Д. Но все же у меня есть эта проблема. Мое решение проблемы - дважды перестроить веб-проект.

0 голосов
/ 16 мая 2014

У меня была такая же проблема.

Я только что изменил номер версии сборки, и мой проект был в порядке.

0 голосов
/ 09 августа 2013

Удалите или отключите ваш антивирус во время сборки.У меня тоже сработало!

0 голосов
/ 16 мая 2012

Я нашел решение этой проблемы, которое до сих пор решало проблему на каждом сервере и клиенте, с которого я ее запускал.

В моем первоначальном макете проекта был веб-проект, который выполнял роль хоста длякак компоненты RIA, так и само приложение Silverlight.Я создал библиотеку классов для служб RIA, переместил туда всю свою логику RIA и добавил ссылку на нее из веб-проекта.Затем я обновил ссылку RIA в Silverlight, чтобы она указывала на этот новый проект.

Мне пришлось добавить следующую строку в файл Silverlight app.xaml.cs, чтобы аутентификация работала.

((WebAuthenticationService)WebContext.Current.Authentication).DomainContext 
    = new RiaNamespace.AuthenticationDomainContext();
0 голосов
/ 14 апреля 2012

У меня было то же самое, что случилось с парой моих проектов.Я обнаружил (на самом деле), что это связано с моим путем обновления RIA и Silverlight.Я получил новую машину, со всеми обновлениями, и это все равно произошло.Однако, когда я заново создал проекты с нуля (копируя файлы и настройки, а не «сгенерированную» информацию о сборке), проблема исчезла.и, честно говоря, воссоздание решения с нуля было болью.Я подозреваю (и единственный вывод, который я мог сделать), что это было связано с какой-то декларацией GAC или другой, которая запрашивала более раннюю версию инфраструктуры RIA.и было несколько обновлений Silverlight, которые произошли в быстрой последовательности за это время.С тех пор у меня не было проблем.

...