Ответ 1
Вам нужно либо...
- Установите Visual Studio на свою машину сборки или
- Вручную скопируйте содержимое папки MSBuild\Visual Studio\v10.0\WebApplications в то же место на вашей машине сборки.
У меня есть эта ошибка при настройке непрерывной интеграции на сервере TFS, но уже нашел ответ. Возможно, это поможет другим:
The imported project "C:\Program Files (x86)\
MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\
Microsoft.WebApplications.targets" was not found.
Вам нужно либо...
<!--<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />-->
Комментарий выше строки в .CSproj. Похоже на ошибку с Microsoft, которая не удаляет или не комментирует при обновлении проекта с Visual Studio 2008 до 2010 года.
Я видел ту же ошибку при настройке непрерывной интеграции с Jenkins. Я смог добавить аргумент командной строки в MSBUILD: /p:VisualStudioVersion=12.0
, потому что на моем сервере сборки был установлен Visual Studio 2012.
Я испытал нечто подобное.
Я написал это в нашем файле Autobuild.targets
, как часть сборки. Он определяет MSWebApplicationTargets
:
<MSWebApplicationTargets>$(SolutionDirectory)\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3</MSWebApplicationTargets>
Затем в файле .csproj
, который является частью проекта и используется в его сборке:
<Import
Project="$(MSWebApplicationTargets)/tools/VSToolsPath/WebApplications/Microsoft.WebApplication.targets" />
Теперь наша проблема заключалась в том, что когда мы открыли проект в Visual Studio, он сказал, что c:/tools/VSToolsPath/WebApplications/Microsoft.WebApplication.targets
не существует (потому что VS считал MSWebApplicationTargets
undefined и поэтому, по-видимому, по умолчанию использовал его c:\
). Вы не предоставляете достаточно информации, хотя, возможно, это и послужило причиной вашей проблемы.
Все, что я должен был сделать, чтобы решить эту проблему, это добавить условие:
<Import
Project="$(MSWebApplicationTargets)/tools/VSToolsPath/WebApplications/Microsoft.WebApplication.targets"
Condition="'$(MSWebApplicationTargets)' != ''" />
Microsoft.WebApplication.targets
В рамках некоторого дальнейшего обсуждения я сделал это с помощью Microsoft.WebApplication.targets
, поэтому нам не пришлось полагаться на установку Visual Studio на серверах сборки. Я добавил его как зависимость:
manage nuget packages
. Это создало файл packages.config
, который перечислял MSBuild.Microsoft.VisualStudio.Web.targets
как зависимость.nuget.exe restore
в начало сборки script, чтобы загрузить зависимости.Загрузите и установите Распространяемый пакет оболочки Microsoft Visual Studio 2013 (изолированные). Или используйте прямую ссылку на vs_isoshell.exe. Я собираюсь сделать пакет NuGet для этого позже.
Преимущество, которое я вижу в этом подходе, заключается в устранении любых сомнений по поводу проблем с авторским правом.
И если у вас уже установлена Visual Studio? Возможно, у вас установлена Visual Studio 2012 (а 10.0 - VS 2010)? В этом случае вы можете просто искать файл .csproj для "10.0" и заменить его на "11.0", и тогда вы сможете просто открыть проект.
У меня была эта проблема, кроме того, что эти файлы уже были. После многого устранения неполадок ответ оказался разочаровывающим: перезапустите службу агента сборки. В моем случае это было: "Visual Studio Team Foundation Build Service Host 2013"
Если вы не развертываете сервер сборки, просто отключите Microsoft.WebApplication.targets
на сервере сборки. См. Мой ответ здесь: fooobar.com/questions/19968/...
Вот некоторые PowerShell, которые исправили эту проблему для меня, добавив отсутствующую ссылку в MSBuild.exe.config на моем сервере сборки. Настройте пути к вашей версии VS/пути к целям.
[xml]$msbuild_config = Get-Content -Path "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe.config"
$webApplicationTarget = $msbuild_config.configuration.msbuildToolsets.toolset.property[0].Clone()
$webApplicationTarget.name = "MSWebApplicationTargets"
$webApplicationTarget.value = "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications"
$msbuild_config.configuration.msbuildToolsets.toolset.AppendChild($webApplicationTarget)
$msbuild_config.save("C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe.config")'''
Я также встречал эту ошибку на VS2017; затем я комментирую ниже два пункта:
<!--<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /><Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />-->
повторно открыть решение, проект может быть успешно загружен снова. (Я не знаю, как это происходит, потому что этот проект можно было нормально загрузить раньше, возможно, я недавно добавил какую-то новую функцию через vs-installer.exe)