외부 VS2013 빌드 오류“오류 MSB4019 : 가져온 프로젝트 <path>를 찾을 수 없습니다”


201

Visual Studio 2013이 아닌 명령 줄을 통해 프로젝트를 빌드하고 있습니다. 참고로 프로젝트를 Visual Studio 2012에서 2013으로 업그레이드했습니다. 프로젝트는 IDE 내부에서 제대로 빌드됩니다. 또한 VS2012를 먼저 완전히 제거한 다음 재부팅하고 VS2013을 설치했습니다. 내가 가지고있는 Visual Studio의 유일한 버전은 2013 Ultimate입니다.

ValidateProjects:
    39>path_to_project.csproj(245,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
    39>Done Building Project "path_to_project.csproj" (Clean target(s)) -- FAILED.

문제의 두 줄은 다음과 같습니다.

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

원래 두 번째 줄은 v10.0이지만 수동으로 v12.0으로 변경했습니다.

$ (VSToolsPath)는 내가 본 것에서 v11.0 (VS2012) 폴더까지 연장되어 더 이상 존재하지 않습니다. 경로는 v12.0이어야합니다.

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

시스템 환경 변수 테이블에서 VSToolsPath를 지정하려고 시도했지만 외부 빌드 유틸리티는 여전히 v11.0을 사용합니다. 레지스트리를 통해 검색을 시도했지만 아무것도 없었습니다.

안타깝게도 정확한 명령 줄을 사용하는 쉬운 방법은 없습니다. 빌드 도구를 사용합니다.

생각?


비슷한 질문이 여기에 stackoverflow.com/questions/17433904/…
Anthony F

필자의 경우 WebPublish 대상으로 빌드하는 빌드 이벤트에서 올바른 VisualStudioVersion을 지정해야했습니다.
user145400

답변:


250

나는 같은 문제가 있었고 더 쉬운 해결책을 찾았습니다.

Vs2012가 csproj 파일에 다음을 추가하기 때문입니다.

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

해당 부분을 안전하게 제거하면 솔루션이 구축됩니다.

으로 Sielu 지적 당신이 .proj 파일이 시작되도록해야 <Project ToolsVersion="12"당신은 비주얼 스튜디오 2010 프로젝트를 열고, 그렇지 않으면 다음에, 다시 제거 된 노드를 추가합니다.

그렇지 않으면 webdeploy를 사용해야하거나 빌드 서버를 사용하는 경우 위의 솔루션은 작동하지 않지만 VisualStudioVersion빌드 스크립트에서 특성을 지정할 수 있습니다 .

msbuild myproject.csproj /p:VisualStudioVersion=12.0

또는 빌드 정의를 편집하십시오.

<code> VisualStudioVersion </ code> 속성을 ​​지정하도록 빌드 정의 편집


1
명령 프롬프트에서 msbuild를 사용하는 동안 오류가 발생했습니다. 프로젝트 파일에서이 부분을 제거하면 문제가 해결되었습니다.
Peter Hedberg

7
이 답변을 사용했으며 * 프로젝트 파일이 <Project ToolsVersion = "12"로 시작했는지 확인한 경우에만 작동했습니다. <Project ToolsVersion = "4"가 있기 전에 VS에서 프로젝트를 열 때마다 두 개의 노드를 다시 추가했습니다. (즉, 프로젝트를 최신 버전으로 다시 마이그레이션했습니다).
Sielu

3
@ giammin, 나는 이미 해결책을 찾았습니다. 프로젝트 파일에서 섹션을 제거하지 마십시오. 빌드 정의에서 올바른 도구 버전을 설정하십시오. 이것은 매우 쉽습니다. 빌드 정의를 열고 "프로세스"페이지로 이동하십시오. 그런 다음 "3. Advanced"그룹 아래에 "MSBuild Arguments"라는 속성이 있습니다. 다음 구문 "/p:VisualStudioVersion=12.0"을 사용하여 매개 변수를 배치하십시오. 물론 따옴표가 없습니다. 더 많은 매개 변수가 있으면 공백으로 구분하고 쉼표로 구분하십시오. 제거하도록 제안한 구성은 빌드 프로세스에서 Visual Studio의 다른 부분에 의해 사용됩니다.
Ralph Jansen

9
해당 라인을 제거하면 웹 배포가 중단 된 것으로 보입니다
Colin Pear

4
위에서 권장 한대로 /p:VisualStudioVersion=12.0 속성을 사용하여 동일한 문제가 해결되었습니다. 감사합니다
Randeep

70

나도 이것을 가지고 있었고 빌드 정의에서 도구 버전을 설정하여 문제를 해결할 수 있습니다.

이것은 매우 쉽습니다. 빌드 정의를 열고 " 프로세스 "페이지 로 이동 하십시오. 그런 다음 " 3. Advanced "그룹 아래에 " MSBuild Arguments " 라는 속성이 있습니다 . 다음 구문으로 매개 변수를 배치하십시오.

/p:VisualStudioVersion=12.0 

더 많은 매개 변수가 있으면 공백으로 구분하고 쉼표로 구분하십시오.


1
우리는 방금 TFS 2005에서 TFS 2013으로의 업그레이드를 완료했으며 이것이 마지막 장애물이었습니다. 이것은 확실히 우리를 위해 일했고 내 머리카락을 뽑아에서 나를 구했습니다. 정말 고마워! +1.
Simon Whitehead 1

2
Sayed Ibrahim Hashimi 의이 기사 는 Visual Studio 2010/2012의 문제점을 설명합니다. 명령 행 빌드는 sln 파일 형식 버전 -1을 VisualStudioVersion으로 사용합니다. Ralph가 설명하는 것처럼 명령 행에서 또는 빌드 스크립트에서 MSBuild 태스크의 특성으로이 값을 대체 할 수 있습니다. Visual Studio 2013에서도 동일한 문제가 발생했으며 VisualStudioVersion을 재정의하면 문제가 해결되었습니다.
mcdon

1
이것은 우리에게도 효과적이었습니다. 또한 여기 에 설명 된 빌드 템플릿 자체를 수정하는 것도 고려했습니다 . 수십 개의 빌드 정의가있는 경우 더 나은 옵션 일 수 있습니다.
JamesQMurphy

이것은 나를 위해 일했습니다. csproj 파일에서 visualstudioversion에 대한 참조를 삭제 한 다음 msbuild 인수를 추가했습니다
Jhayes2118

51

이는 밀접한 관련이 있지만 OP 관련 문제를 해결하거나 수정하지 않을 수 있습니다. 필자의 경우 VS2013을 사용하여 Azure 사이트 배포를 자동화하려고했습니다. 그러나 VS 작업을 통한 빌드 및 배포는 MSBuild를 사용하여 "대상"과 비슷한 오류를 나타 냈습니다. MSBuild는 VS2013에서 다르며 .Net Framework가 아닌 VS의 일부입니다 ( http://timrayburn.net/blog/visual-studio-2013-and-msbuild/ 참조). ). 기본적으로 올바른 MSBuild 버전을 사용하십시오.

올드, VS2012

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

새로운 VS2013

C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe

최신 VS2015

C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe

최신 VS2017 (완전히 테스트하지는 않았지만 발견됨-약간 이동 함)

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe

이것은 나를 위해 그것을 고쳤다. 또한 비슷한 질문에 대한 비슷한 대답은 다음과 같습니다. stackoverflow.com/a/19826448/61569
Anthony F

22

난 그냥 나에게 준 Kinook의 응답을 수신 링크 :

기본적으로, 나는 빌딩하기 전에 다음을 호출해야합니다. Visual Studio 2013이 환경을 자동으로 먼저 등록하지는 않지만 2012는 그렇지 않았거나 잊어 버렸습니다.

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86

이 게시물이 다른 사람을 돕기를 바랍니다.


nodeJS을 구축 할 때이 내 문제를 해결, 정말 감사 node-gypCpp default.props찾을 수 없습니다! +1
Pogrindis

21

giammin의 솔루션 이 부분적으로 잘못되었습니다. 당신은 해서는 안 솔루션에서 그 전체 PropertyGroup를 제거합니다. 그렇게하면 MSBuild의 "DeployTarget = Package" 기능이 작동을 멈 춥니 다. 이 기능 은 "VSToolsPath" 설정 에 의존합니다 .

<PropertyGroup>
  <!-- VisualStudioVersion is incompatible with later versions of Visual Studio.  Removing. -->
  <!-- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> -->
  <!-- VSToolsPath is required by MSBuild for features like "DeployTarget=Package" -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

10

FSharp 대상에이 문제가있었습니다 (FSharpTargetsPath가 비어 있음).

많은 경로는 VS 버전을 참조하여 빌드됩니다.

여러 가지 이유로 우리 빌드는 시스템 권한으로 실행되며 환경 변수 "VisualStudioVersion"은 VS 2013 설치 관리자에 의해 "사용자"수준에서만 설정되었습니다.

실행중인 레벨 (시스템 또는 사용자) 에서 " VisualStudioVersion"환경 변수가 " 12.0"로 설정되어 있는지 확인하십시오 .


5
서비스가 대화 형 데스크톱 권한이 없을 수도있는 특정 서비스 계정으로 실행되는 빌드 서버 (예 : CruiseControl 또는 TeamCity)를 실행할 때 일반적인 시나리오 일 수 있습니다. 이 팁은 (VS 2013 CruiseControl.NET으로, 서버 2008 R2의 새로 설치에 설치) 나를 위해 문제를 해결
데이비드 Keaveny

"VisualStudioVersion"은 어디에서 볼 수 있습니까?
WEFX 2016 년

@WEFX System제어판에서 선택하여 환경 변수를 확인한 다음을 선택 Advanced system settings하고 마지막으로Environment Variables
Scott

6

이것을 명령 행에서 실행하면 문제도 해결됩니다. SETX VisualStudioVersion "12.0"


이것은 저에게 효과적이며 프로젝트 파일을 수정하는 것이 좋습니다.
Sean

4

Visual Studio 2012를 2013으로 마이그레이션하는 경우 edior를 사용하여 * .csprorj 프로젝트 파일을 엽니 다.
'Project'태그의 ToolsVersion 요소를 확인하십시오.

그 가치는 4.0입니다
12.0으로 만들었습니다

  • 에서

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0"
  • <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0"

또는 msbuild로 빌드하는 경우 VisualStudioVersion 속성 만 지정하십시오.

msbuild /p:VisualStudioVersion=12.0


1
ToolsVersion이 올바르게 빌드되지 않은 프로젝트를 보았 기 때문에 ToolsVersion이이 오류 메시지를 수정하는 유일한 변수가 아니어야합니다.
Patrick Desjardins

2

외부 빌드 유틸리티를 사용하고있었습니다. 제품을 올바르게 이해하면 상업용 버전 인 Ants와 같은 것을 생각해보십시오. 답변을 위해 제조업체에 문의해야했습니다.

결과적으로 DEVSTUDIO_NET_DIR 프로젝트에 글로벌 매크로가 있습니다. 거기에서 .Net으로 경로를 변경해야했습니다. 그들은 다양한 비주얼 스튜디오 버전을 "액션 (Actions)"으로 나열했는데,이를 통해 모든 길은 장면 뒤의 하나의 글로벌 변수로 돌아갑니다. 내가 이해할 수있는 것이 빠지지 않는 한, 내가 길을 가졌다면 제품에 대한 결함으로 이것을 열거 할 것이다. 경로를 수정하면 빌드 문제가 해결되었습니다.


2

Visual Studio 2013이 설치되어 있습니다. 이것은 나를 위해 일했다 :

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

그래서에서 조건 변경 한 ==!=와의 값 10.0을을 12.0.


2

비슷한 문제가있었습니다. 제안 된 모든 솔루션은이 문제에 대한 해결 방법이지만 오류의 원인을 해결하지는 않습니다. @giammin 솔루션은 게시 기능이 손상되어 tfs 빌드 서버를 사용하는 경우 적용해서는 안됩니다. @ cat5dev 솔루션-문제는 해결하지만 소스는 해결하지 않습니다.

VS2012 용 빌드 프로세스 템플릿을 사용하고 VS2012 용 ReleaseDefaultTemplate.11.1.xaml or DefaultTemplate.11.1.xaml 빌드 템플릿과 $ (VisualStudioVersion)이 11.0으로 설정된 것처럼 거의 확실합니다.

당신은 VS2013에 대한 빌드 프로세스 템플릿을 사용해야 ReleaseTfvcTemplate.12.xaml or TfvcTemplate.12.xaml 12.0 $ (VisualStudioVersion) 세트를 가지고있는

프로젝트 파일을 변경하지 않고도 작동합니다.


2

나는 또한 같은 오류가 있었다 .. 나는 그것을 고치기 위해 이것을했다

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />

로 변경

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

그리고 끝났어.


2

내 경우에는 .csproj 파일을 열어 아래 줄에 주석을 달고 트릭을 수행했습니다.

.<!-- <Import Project="..\PRPJECTNAME.targets" /> -->

내 문제는 다를 수 있지만 여기로 끌려 갔지만 이것은 누군가를 도울 수 있습니다.

내 솔루션에서 단일 웹 프로젝트를 골라서 문제를 해결할 수있는 독립형 프로젝트로 열어 보았습니다.


2

올바른 MSBuild 버전을 사용하십시오. 환경 변수를 다음으로 설정하십시오.

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin

VS 2019 프로젝트에서도 작동합니다.

이전에는 C:\Windows\Microsoft.NET\Framework\v4.0.30319


"C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild 대신"C : \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Current \ Bin \ MSBuild.exe "를 사용했습니다. exe "와 그
작품

예, 프로젝트 파일에 VisualStudioVersion = 14.0 인 SSDT 프로젝트 (.sqlproj)를 사용하고 있습니다. 핵심 3.1을 설치했는데 대상에 대한 환경 변수를 하나님께 만 설정했습니다. 제안한 폴더에서 msbuild를 사용하면 매력처럼 작동했습니다!
Matthew Beck

1

필자의 경우 dev 환경은 VS2013이고 TFS 2010을 사용하고 있습니다. 빌드는 .NET 4.5.1을 대상으로했습니다. CI에 대한 자동 빌드를 설정하고있었습니다. 위에서 언급 한 해결 방법을 시도 할 때마다-속성 그룹을 완전히 제거하거나 일부 줄을 교체하는 등 TFS에서 발생했던 빌드가 있지만 푸른에 게시하면 'MSDeploy'로 실패하거나 때로는 다른 오류가 발생했습니다. 두 가지를 동시에 달성 할 수 없었습니다.

그래서 마침내 문제를 해결하기 위해 MSBuild 인수를 전달해야했습니다.

빌드 정의 편집으로 이동> 프로세스> 3. 고급> MSBuild 인수 (설정) /p:VisualStudioVersion=12.0

그것은 나를 위해 일했다.


1

C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \에서 C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \으로 WebApplications 폴더를 복사해야합니다.


또는 Visual Studio 2013이 설치된 위치에서 Microsoft.WebApplication.targets 파일 만 복사하십시오.
ThatBlairGuy 2016 년

0

당신은 발견 할 것이다

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

이 오류가 나타나는 csproj 파일에서. csproj에서 이것을 제거한 다음 빌드하십시오.


0

Visual Studio 2012/2013 및 MSBuild Tools 2013에 대한 지원은 TeamCity 8.1에만 도입 되었기 때문에 문제를 해결하기 위해 한 가지만 수행하면됩니다. TeamCity를 버전 8.1.x 이상으로 업그레이드하십시오. 빌드 단계에서 TeamCity 수정 MSBuild 도구 버전 설정을 업그레이드하면 문제가 사라집니다. 자세한 내용은 여기를 참조하십시오 : http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html


0

나-VisualStudioVersion 변수의 v11.0 값을 v10.0으로 변경하는 데 도움이되지 않았습니다. .csproj 파일에서 변수를 변경하지 않았습니다. promt 명령을 통해 설정하지 않았습니다. 기타...

해당 특정 버전 (v11.0)의 로컬 폴더를 빌드 서버로 복사했습니다.


0

위의 모든 해결책을 시도했지만 여전히 운이 없습니다. 사람들이 빌드 스튜디오에 Visual Studio를 설치하여 문제를 해결하는 것을 들었지만 5GB의 여유 공간 만 있으면 C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio를 빌드 서버에 복사하여 하루에 호출했습니다. . 그 후 팀 도시 9.x 및 Visual Studio 2013을 사용하여 작업을 시작했습니다.


0

TFS 2015 빌드 서버 기반

이 오류에 대응하면 ... Error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

.csproj오류 메시지에 이름이 지정된 프로젝트 파일을 열고 아래 섹션을 주석 처리하십시오.

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


0

일부 VS 구성 요소를 설치할 때이 오류가 발생했습니다. 불행히도 이러한 답변 중 어느 것도 도움이되지 않았습니다. 명령 개발에 TFS를 사용하고 빌드 정의를 편집 할 권한이 없습니다. VS110COMNTOOLSand 라는 환경 변수를 삭제 하여이 문제를 해결했습니다 VS120COMNTOOLS. VS 구성 요소와 함께 설치된 것 같습니다.


0

로컬 PC에서 WebApplications 폴더가 누락되어 2012를 사용할 때와 같이 Visual Studio 2017과 함께 설치되지 않은 것을 발견했습니다.


0

제 경우에는 잘못된 버전을 사용하고있었습니다. MSBuild.exe .

사용해야하는 버전은 프로젝트를 만들 때 사용한 Visual Studio 버전에 따라 다릅니다. 필자의 경우 14.0이 필요했습니다 (Visual Studio 2015 사용).

이것은 다음에서 발견되었습니다.

C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe

당신은 아래를 볼 수 있습니다 :

C:\Program Files (x86)\MSBuild

다른 버전을 찾으려면

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