У нас есть проект x86 VS2008 для .Net 3.5 SP1 с использованием Workflow Foundation. На некоторых компьютерах он будет компилироваться, но на других произойдет сбой:
Workflow.Targets(127,5): error : Compilation failed. Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Google предлагает множество решений для различных ситуаций, которые могут привести к этой ошибке, но единственное, что я нашел, которое сработало для нас, это: поменяйте местами порядок двух тегов <Import Project... />
в .csproj файл . Почему это работает, загадка, но изменение позволило проекту скомпилировать и работать на компьютерах, чего раньше не было (хотя это также вызывало проблемы на одной машине, которая никогда не требовала изменений).
Есть ли какая-либо информация об этой проблеме и об этом странном решении? В последнее время «исправление» стало непригодным для использования. Проект находился на полке около года, и теперь, если проект компилируется с замененными тегами, мы получаем ошибку времени выполнения при инициализации рабочего процесса:
Cannot initialize 'StateMachineWorkflowActivity' that does not define a valid 'InitialStateName' property
Если скомпилировано без поменяемых тегов (с использованием одной из машин, способных его скомпилировать независимо от того, были ли поменяны метки), эта ошибка во время выполнения больше не возникает и все работает отлично.
Google снова предлагает множество решений для различных ситуаций, которые могут привести к этой ошибке во время выполнения, но я не нашел такого, который бы работал для нас и решал исходную проблему, чтобы нам не приходилось менять теги в первом place кажется лучшим направлением для поиска. Проект был успешно скомпилирован год назад (с замененными тегами), поэтому с тех пор все, что изменилось, будет включать более поздние версии устанавливаемой платформы dot net в дополнение к 3.5 SP1 - на всех компьютерах были применены обновления dotnet (но некоторые компьютеры новее других, поэтому все они были бы вместе). Проект не настроен на достаточное количество машин, чтобы можно было наблюдать значимые шаблоны, учитывая количество смешанных переменных. Одна машина, которая может его собрать, - это x64 Win7 с установленными VS2008 и VS2010 (обновление его RTM VS2008 до VS2008 SP1 не изменило его), одна машина, которая не может его собрать, - это WinXP x86, сначала использующий MSBuild, затем с установленным VS2008 затем с установленными VS2008 и VS2010. MSBuild смогла собрать его год назад и все еще может строить с поменявшимися тегами.
Существует исправление, которое исправляет пару ситуаций, которые вызывают проблемы "Compilation failed. Unable to load one or more of the requested types."
во время компиляции, но хотя наш проект, похоже, соответствует описанию в kb2023579, исправление , которое заменяет его , не помогло - одно из многих решений, которые у нас не сработали.
(Мы должны решить эту проблему, потому что сервер сборки является одной из машин, на которых он не компилируется)