Ошибка EntityDeploySplit - отсутствует Microsoft.Data.Entity.Build.Tasks.dll

entity-framework entity-framework-6 visual-studio-2013

Вопрос

После чистого форматирования Windows и установки Visual Studio 2013, пытаясь создать проект с базами данных Entm Framework edmx, вы получите следующую ошибку:

Не удалось загрузить задачу «EntityDeploySplit» из сборки C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Data.Entity.Build.Tasks.dll. Не удалось загрузить файл или файл сборки: /// C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Data.Entity.Build.Tasks.dll или одна из его зависимостей. Система не может найти указанный файл. Убедитесь, что объявление верное, что сборка и все ее зависимости доступны, и что задача содержит открытый класс, который реализует Microsoft.Build.Framework.ITask.

Есть ли способ установить это отдельно? В чем состоит эта сборка по умолчанию?

UPDATE: Это также проявляется при поиске задачи EntityClean. Я склонен думать, что он сначала проверяет ящик, так как другой разработчик, который его запускал, попробовал очистить / перестроить, а затем это начало появляться.

Принятый ответ

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

Я обнаружил, что когда мой проект строит, он указывает на этот целевой файл:

C:\Program Files (x86)\MSBuild\12.0\Bin\Microsoft.Data.Entity.targets

Этот целевой файл кажется просто заполнитель. В этом файле есть элемент Import, который указывает на $(MSBuildFrameworkToolsPath)\Microsoft.Data.Entity.targets который запускает целевой файл, расположенный по этому пути. Я искал реестр и обнаружил, что MSBuildFrameworkToolsPath - это запись в реестре со значением C:\Windows\Microsoft.NET\Framework\v4.0.30319\

Я пошел в файл целей, на который были указаны ссылки, и поиск элемента UsingTask который был указан в моем исключении. Внутри элемента UsingTask атрибут AssemblyFile указывался на $(MSBuildBinPath)\Microsoft.Data.Entity.Build.Tasks.dll . Я искал реестр и обнаружил, что запись в MSBuildBinPath указана на c:\Windows\Microsoft.NET\Framework\v3.5\

Я не уверен, почему это было указано на это, возможно, установка Framework или Visual Studio не очистила его. Наконец, я изменил все UsingTask AssemblyFile атрибутов UsingTask :

$(MSBuildFrameworkToolsPath)\Microsoft.Data.Entity.Build.Tasks.dll

Я использовал ту же переменную, которая была в целевом файле MSBuild Bin.

Надеюсь это поможет.


Популярные ответы

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

Откройте C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Data.Entity.targets в блокноте.

Измените элементы UsingTask для:

  <UsingTask TaskName="EntityDeploySplit"
             AssemblyFile="Microsoft.Data.Entity.Build.Tasks.dll" />

  <UsingTask TaskName="EntityDeploy"
             AssemblyFile="Microsoft.Data.Entity.Build.Tasks.dll" />

  <UsingTask TaskName="EntityDeploySetLogicalNames"
             AssemblyFile="Microsoft.Data.Entity.Build.Tasks.dll" />

  <UsingTask TaskName="EntityClean"
             AssemblyFile="Microsoft.Data.Entity.Build.Tasks.dll" />



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему