MS-Build 2017“Microsoft.WebApplication.targets”가 없습니다.


85

빌드 서버 (jenkins)를 Visual Studio 2015에서 2017로 업그레이드하려고합니다. MS-Build를 통해 빌드하고 있습니다. 이 답변에 설명 된대로 MS-Buld 도구를 다운로드하고 설치했습니다 . 프로젝트를 컴파일하면 Microsoft.WebApplication.targets찾을 수없는 오류가 발생합니다 .

자세한 오류 :

 error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets"

MS-Build 디렉터리에서 찾기를 수행했습니다.

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets"


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       11.01.2012     00:23          19654 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       06.07.2015     21:55          20118 Microsoft.WebApplication.targets                                                                                                                                                                                


    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications


Mode                LastWriteTime         Length Name                                                                                                                                                                                                            
----                -------------         ------ ----                                                                                                                                                                                                            
-a----       22.07.2013     01:25          19995 Microsoft.WebApplication.targets

보시다시피 이전 컴파일러 버전에는 파일이 있지만 v15.0에는 누락되었습니다.

또한 빌드 서버에 Visual Studio 2017을 설치했습니다. Visual Studio 2017로 컴파일하면 프로젝트가 성공적으로 빌드됩니다.

이 문제를 해결하는 방법에 대한 힌트가 있습니까? 한 가지 가능한 솔루션은 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications지점에서 이전 v14.0 파일 (아래에 있음 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications) 로의 심볼릭 링크를 생성하는 것 입니다.

고마워



1
VS 2019를 사용하는 프로젝트에서이 문제가 발생했습니다. csproj 파일을 열고 <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets 줄을 식별하여 문제를 해결했습니다. "/> 및 <Import Project ="$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) \ WebApplications \ Microsoft.WebApplication.targets "/>로
대체

답변:


124

"웹 개발 빌드 도구"에 대한 워크로드가 누락 된 것 같습니다 Microsoft.VisualStudio.Workload.WebBuildTools..

여기 (VS2017) 또는 여기 (VS2019) 에서 빌드 도구 설치 프로그램을 다운로드 한 다음 실행 하여 설치할 수 있습니다.

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

또는 vs_buildtools.exeGUI에서 "웹 개발 빌드 도구"구성 요소를 열고 선택합니다.

GUI의 스크린 샷


3
이 명령을 어떻게 실행할 수 있습니까? 'vs_buildtools.exe'가 개발자 도구 2017에서 내부 또는 외부 명령 오류로 인식되지 않습니다
Developerzzz

26
"Visual Studio 2017 용 빌드 도구"설치 프로그램 ( visualstudio.com/thank-you-downloading-visual-studio/… ) 을 이미 다운로드 한 경우 해당 설치 프로그램을 시작하고 수정을 누르고 "웹 개발 빌드 작업 "워크로드 모듈 확인란. 그런 다음 수정 버튼을 클릭하고 설치 프로그램이 완료되도록합니다.
Spiralis

예, 설치하려면 위의 명령 줄을 사용해야합니다. GUI에서 찾을 수 없습니다.
sky91

4
나는 설치 Build Tools for Visual Studio 2017와 함께 Web development build tasks그러나 제공된 링크에서 아직 작성하지 않습니다 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications해달라고도 folder..i를 참조 vs_buildtools.exe`: .. 난 전체`C 검색
LP13

1
감사합니다 ..VS 2017에서 값이 stackoverflow.com/questions/47077150/$(MSBuildExtensionsPath) 으로 변경된 것 같습니다. 그C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild
LP13

88

위의 대답은 기술적으로 정확하지 않으며 적어도 저에게는 약간 혼란스럽고 Visual Build Professional이 작동하려면 추가 단계가 필요했습니다.

  1. vs_buildtools.exe는 기술적으로 존재하지 않습니다. 그 파일이 어디에 있는지 묻는 질문 을 만들어야 했습니다. vs_buildtools.exe가 vs_buildtools _ *******. exe이고 실제 설치 프로그램인지는 분명하지 않았습니다. 또한 위에서 언급 한 "-add ***"는 속기 일뿐입니다. GUI로 이동하여 두 워크 플로 작업을 모두 확인할 수 있습니다. 그것은 같은 일을합니다. 필요하지는 않지만 vs_buildtools 파일이 생겼습니다.

  2. VSB Pro는 여전히 내 프로젝트를 빌드하지 않았습니다. 위와 같은 오류가 발생했습니다. 비밀 소스는 단순히 WebApplications폴더 를에 복사하는 C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0입니다. 그런 다음 프로젝트를 재건했는데 모두 괜찮 았습니다. WebApplication.targets 파일을 예상 위치에 배치했습니다.

Microsoft가 할 수없는 이유는 저를 넘어선 것입니다. 또한 별도의 설치 이유. VS17은 엄청난 양의 물건을 설치합니다. 항상 그렇듯이 빌드 도구는 암시 적입니다. 도대체 무엇이.

나는이 답변을 다른 사람들에게 도움이되기를 바랍니다. 나는 함정에 빠졌고 프로젝트가 구축되지 않은 채로 많은 시간을 낭비했습니다. 이 답변이 상황을 조금 명확하게 해주기를 바랍니다.


4
"Build Tools for Visual Studio 2017"은 실제로 대상을 C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0에 복사하는 반면 msbuild는 실제로 C에서 대상을 찾으려고합니다. : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0이므로 폴더를 복사해야합니다. 분명히 첫 번째는 IDE에서 사용하고 두 번째는 독립형 msbuild에서 사용합니다. 이상한.
ZZZ

1
수동으로 복사해서는 안됩니다. vs_buildtools.exe는 Visual Studio 설치 관리자입니다. 빌드 도구 또는 Visual Studio를 설치하는 데 도움이됩니다. 둘 다 서로 다른 워크로드와 구성 요소를 설치할 수 있습니다. Visual Studio 용 워크로드를 설치하려면 "수정"버튼을 클릭해야합니다. 이러한 방식으로 필요한 구성 요소를 설치할 수 있습니다.
Vladimir Serykh

2
물론 문제는 Visual Studio 설치 관리자가 WebApplications 폴더를 필요한 두 위치에 안정적으로 배치하지 않는 것 같습니다. Sarah가 제안한대로 수동 복사는 내 dev 컴퓨터에서 빌드를 안정적으로 작업 할 수있는 유일한 방법입니다.
Bart Read

21

Visual Studio 2015에서 2017로 업그레이드 한 후에도 비슷한 문제가 발생했습니다. 웹 응용 프로그램 프로젝트를로드하려고하면 오류 메시지가 표시됩니다.

가져온 프로젝트 "C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets"를 찾을 수 없습니다. 또한 $ (VSToolsPath)- "C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0"의 대체 검색 경로에서 "WebApplications \ Microsoft.WebApplication.targets"를 찾으려고했습니다. 이러한 검색 경로는 "C : \ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config"에 정의되어 있습니다. 선언의 경로가 올바른지, 파일이 검색 경로 중 하나의 디스크에 있는지 확인합니다.

이 오류에 대한 해결책은 여기 에서 찾았 습니다 .

제 경우에는 .csproj 파일에 다음 줄이 포함되어 있습니다.

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath>
</PropertyGroup>

태그 에서 v14.0by v$(VisualStudioVersion)를 바꾼 후 VSToolPath프로젝트를로드 할 수 있습니다.

I는 또한 대체 v14.0하여 v10.0VisualStudioVersion상기 링크 방송의 용액으로서, 태그. 그러나 나에게는 14.0으로 두어도 작동했습니다.

다음은 이러한 선이 최종적으로 표시되는 방식입니다.

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

.csproj에 이러한 줄이 전혀 없으면이 줄 바로 앞에 수동으로 추가해야합니다.

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" />

제 경우에는 (약간 다른 오류 메시지이지만 동일한 문제) 다음 줄이었습니다.

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

2011 년부터 Visual Studio 버전으로 만든 프로젝트에는 VSToolsPath재정 의 된 줄이 포함되어 있지만 이전 파일에는 포함되지 않은 것 같습니다. Visual Studio는 최신 VS 버전으로 업그레이드 할 때 자동으로 추가하지 않았으므로없는 경우 추가해야합니다.

이 정보의 출처 : https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (클릭 보기 전체 토론 스레드를 보려면 더 많은 댓글 -불행히도이 "추가"섹션의 댓글에 직접 연결할 수 없습니다.)


11

chocolatey를WebBuildTools 사용하여 이미 포함 된 옵션으로 2017 빌드 도구를 쉽게 설치할 수 있습니다 . 설치 가 완료되면 관리자 명령 프롬프트에 다음을 입력하십시오.

choco install visualstudio2017buildtools -y

VS 2019의 경우 유사합니다.

choco install visualstudio2019buildtools -y

2
특정 버전을 설치할 필요는 없습니다. Chocolatey를 사용하여 이러한 방식으로 설치하고 허용 된 답변을 통합 할 수 있습니다.cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary

8

다음 WebApplications에서 폴더 복사

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0

...에

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0

또는 빌드 스크립트에서 컴파일하기 전에 다음 줄을 추가하십시오.

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

상승 된 권한으로 실행해야합니다.


3

VS 2017 pro, asp.net MVC 응용 프로그램을 만들고 Jenkins로 빌드하는 방법은 무엇입니까?

dev 컴퓨터와 빌드 서버 모두에서 2017 pro 대비 사용

VisualStudio가 15
Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets"Condition = "false" 로 설정되어 있는지 확인합니다.


jenkins 전역 구성 관리자에서 msbuild 도구 를 C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe로 설정합니다.

jenkins를 사용하여 Windows 명령 일괄 처리를 실행합니다.
nugets : "C : \ Program Files (x86) \ Jenkins \ tools \ nuget \ NuGet.exe"restore "C : \ Program Files (x86) \ Jenkins \ workspace \ theapp_build \ theapp. sln "

jenkins를 사용하여 Windows 명령 일괄 처리를 실행합니다.
MSBuild 빌드 파일 : theapp.sln
명령 줄 인수 : / nologo / t : restore / t : rebuild / p : Configuration = "Debug"/p:VisualStudioVersion=15.0


2

VS 2019의 경우 다음을 복사하여 수정했습니다.

C : \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v16.0

...에

C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio


VS2019 용 C : \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0을 얻는 방법
somegeek

-1

Visual Studio 설치 관리자 를 사용 하여 Visual Studio Community 2017 을 업데이트 하면 문제가 해결됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.