2013-12-03 2 views
59

Кто-нибудь видел эту ошибку и знает, как ее исправить?Задача TransformXml не может быть загружена из Microsoft.Web.Publishing.Tasks.dll

"TransformXml" задача не может быть загружен из сборки C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll.

Не удалось загрузить файл или сборку: /// C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll 'или один из его зависимостей. Система не может найти указанный файл.

Убедитесь, что объявление верное, что сборка и все ее зависимости доступны, и что задача содержит открытый класс, который реализует Microsoft.Build.Framework.ITask.

В другом месте я читал, что проблема заключается в том, что у вас нет установленного SQL Server. Но у меня есть SQL Express 2012 x64, установленный с пакетом обновления 1 (SP1). Я также запускаю VS 2013 Professional.

У меня есть такое же решение в VS 2012 Express без проблем.

+1

Это должно быть пакет NuGet. Мне не нравятся эти скрытые ссылки внутри моего проекта. – Jaider

ответ

27

Чтобы заставить меня работать, я просто скопировал папку v10.0 и переименовал ее в v11.0, и с этого момента все будет хорошо работать. Это быстрое решение.

Поскольку это, вероятно, не лучшее решение, и хотя оно работает, я попытался установить Microsoft Windows Windows SDK for Windows 7 and .NET Framework 4 Windows SDK для Windows 7 и .NET Framework 4, но он долго загружается.

+0

Это сработало и для меня – allencoded

+0

Установка SDK решена. thx – justSteve

+1

Я не видел папку «Веб» в версии 10.0. Поэтому я скопировал его из папки v12.0 в папку v11.0. – Sundeep

2

Правильный ответ на этот вопрос заключается в том, чтобы выгрузить проект, о котором идет речь, а затем отредактировать файл csproj, найти запись, в которой они ссылаются на путь 10.0, и изменить ее вместо 11.0.

+0

+ 1 для этого. Я вызвал эту проблему, когда я скопировал папки рабочего пространства с одной dev-машины на другую. Второй dev-машина была установлена ​​v11, а не v10. Таким образом, папка v10 была пуста. – maplemale

109

Ответы, предоставленные Dai Bok и emalamisura, работают нормально, пока вы используете Visual Studio 2012. Для VS 2013 это тоже не удается. Для того, чтобы сделать эту работу со всеми версиями Visual Studio вы должны:

  • Открыть файл проекта (.csproj) неисправного проекта загрузить
  • Поиск по <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
  • Изменить это <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.targets" />
  • Обновить проект

Это установит правильную версию Visual Studio динамически и правильно.

+1

Мне нравится ваше решение Benjamin, но проблема, с которой я столкнулась, заключалась в том, что папка v11 отсутствовала, возможно, потому что у нас есть некоторые люди, использующие vs2010 и не обновленные до vs2012, но –

+0

Это сработало для меня спасибо. – Randeep

+3

Это привело меня к правильному пути, но изменение, которое я сделал, было связано с узлом . Моя AssemblyFile использовала неправильную версию. Просто нужно изменить версию здесь. Другой вариант - использовать макрос версии вместо явной установки версии. – Scott

8

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

Чтобы использовать его за пределами проекта веб-приложения, я попытался добавить элемент UseTask в свой проект и направить его в нужное место, используя свойства ms build (как продемонстрировал Бенджамин). Однако их не было на моем сервере сборки (те, у кого есть легкий доступ к файловой системе своего сервера сборки, возможно, пропустите это и просто установите соответствующий пакет в Visual Studio).Я даже зашел так далеко, как в случае с винчестерскими версиями жесткого кода, но он всегда удалял эту ошибку.

я, наконец, сдался, вытащил библиотеки DLL из моего локального ПК:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll 

Я загрузил их в системе управления и добавил эту папку в рабочем пространстве (Edit сборка Определения моей сборки в -> Source Settings -> Source Control Папка). Оттуда, я даже не нужно ссылаться на папку - вот что мой UsingTask выглядит следующим образом:

<UsingTask TaskName="TransformXml" AssemblyFile="Microsoft.Web.Publishing.Tasks.dll" /> 

Теперь я могу использовать задачу TransformXml к содержанию моего сердца от любого проекта.

+7

Пакет [MSBuild.Microsoft.VisualStudio.Web.targets] (https://www.nuget.org/packages/MSBuild.Microsoft.VisualStudio.Web.targets/) имеет необходимые цели для сборки без установки VS. Пример: . См. [Этот] (https://coderwall.com/p/qvrchq/getting-teamcity-to-build-asp-net-mvc-3-web-solutions) блог для получения более подробной информации. – moonpatrol

+1

Эй, @moonpatrol, вы должны это сделать ответ, потому что я предпочитаю этот путь - установка пакета, а затем его обращение - абсолютно универсальное решение :-) Я просто попробовал, и отлично работает. В любом случае, спасибо! если вы ответите, просто скажите мне, и я проголосую. – Tengiz

3

Поскольку в моей папке VisualStudio есть только v12.0, v14.0 и v15.0, я редактирую файл проекта и изменяю ссылочный путь от v10.0 до v14.0. Затем проект строится успешно.

До:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" /> 

После:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" /> 
0

Чтобы устранить эту проблему,

  1. Найти Visual Studio Installer в вашем компьютере
  2. Нажмите или нажмите, чтобы начать установщик, а затем выберите «Изменить».
  3. На экране «Индивидуальные компоненты» выберите инструменты Asp.net и веб-разработки, а затем выберите «Изменить/установить».

Это решило проблему, поскольку она создает DLL по указанному пути.

+2

Я использую VS2017, и выполнение этого шага не создает эти файлы. Я думаю, возможно, что-то еще вы выбрали (или в сочетании с ASP.net и инструментами веб-разработки), которые добавили его. Не знаю, что :( – Kris

+0

Я выбрал только это. Попробуйте выбрать компоненты, связанные с Интернетом, и установите. Удачи. –

+0

Я просто пробовал весь веб-рабочий процесс и до сих пор не имею этих файлов. так как у меня есть ограниченное пространство на жестком диске для установки компонентов –

0

Вам нужны две вещи, чтобы сделать его работу:

1) Установка Visual Studio Tools сборки (Вам не нужен весь Visual Studio, только VS инструменты для сборки) с выбранным «веб-разработки инструментов сборки» вариант на вашем сервере сборки https://www.visualstudio.com/pl/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15

2) Убедитесь в том, что путь к Microsoft.Web.Publishing.Tasks.dll правильно

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" /> 
Смежные вопросы