[asp.net] 파일이 실제로 v10을 참조 할 때 v11.0 \ WebApplications \ Microsoft.WebApplication.targets를 찾을 수 없습니다.
먼저 몇 가지 배경. 2012 년 말에 우리는 vs2008 솔루션을 vs2010으로 마이그레이션했지만 여전히 .NET 3.5를 대상으로합니다. (나는 여기서 가장 최근의 가장 위대한 것 외에는 아무것도 모른다!)
사람들이 다음과 같은 오류가 발생하기 시작한 몇 주 전까지는이 설정에 문제가 없었습니다.
"foo.csproj" (Rebuild target) (16:5) ->
C:\...\foo.csproj(142,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 declaration is correct, and that the file exists on disk.
흥미로운 점은 프로젝트 파일을 보면 Visual Studio 2012를 사용하지 않기 때문에 의미가있는 v10을 참조한다는 것입니다.
이 오류는 한 번에 여러 명에게 영향을 미쳤으며 심지어 몇 달 동안 변경되지 않은 이전 코드 분기에서도 발생했습니다.
나는 일을 혼란스럽게 만드는 일부 업데이트가 우리 컴퓨터에 푸시되었다고 생각하지만 어떻게 해야할지 모르겠습니다.
단기 솔루션은 VS 2012를 설치하고 사용하지 않는 것이었지만 그보다 약간 더 깨끗한 것을 기대하고 있습니다.
답변
Visual Studio 2013에서 동일한 문제가 발생했습니다. 명령 줄에서 .NET Framework와 함께 제공되는 MSBuild의 이전 버전을 사용하고있었습니다. Microsoft는 이제 Visual Studio 자체의 일부 및 별도의 설치 관리자로 MSBuild를 출시하고 있습니다 ( http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of- visual-studio.aspx ).
해결책은 .NET에있는 MSBuild.exe의 새 버전을 사용하는 것이 었습니다 C:\Program Files (x86)\MSBuild\12.0\Bin
. 일단 그렇게하면 모든 타겟 오류가 사라졌습니다.
편집 1
주석에서 언급했듯이 새 버전의 MSBuild마다 새 디렉터리가 제공됩니다. Visual Studio 2015의 경우 C:\Program Files (x86)\MSBuild\14.0\Bin
.
2 편집
주석에서 언급했듯이 Visual Studio 2017의 경우 C:\Program Files (x86)\Microsoft Visual Studio\2017\<Edition>\MSBuild\15.0\Bin\MSBuild.exe
.
답변
VS2012가 설치되지 않은 빌드 서버가있는 경우 다음 방법으로 해결할 수 있습니다.
a) 솔루션에 MSBuild.Microsoft.VisualStudio.Web.targets 패키지 설치
b) .csproj 파일에서 다음 줄을 바꿉니다.
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
이 줄이 너겟 패키지를 가리키고
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" Condition="true" />
편집하다
업데이트 된 행의 버전을 @joedragons 포인트 즉 nuget 패키지 버전을 일치해야합니다으로 대체 targets.11.0.2.1
하여 targets.x.x.x.x
현재 버전.
답변
이 문제에 대한 간단한 해결책 :
다음 경로로 이동하십시오.
C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio
Visual Studio 2010, 2012 또는 2013 설치에 따라 최신 버전 V10.0, v11.0, v12.0이 표시됩니다.
WebApplications
최신 버전 디렉토리 중 하나에서 폴더를 복사 하여 다른 디렉토리에 붙여 넣습니다.
문제가 해결되어야합니다.
답변
무료 Visual Studio 2012 Shell (격리 됨)을 설치하면 WebApplications v11 MSBuild 파일 이 설치되는 것으로 나타났습니다 . Visual Studio 2012의 전체 설치보다 가볍고 라이선스 문제가 없습니다.
답변
와. 빌드 머신에서도 똑같은 일이 일어나는 것을 보았습니다. 우리는 VS2010을 사용하고 .NET 4.0을 대상으로합니다. 프로젝트 파일은 이러한 타겟의 v10.0 버전을 명시 적으로 가져옵니다. 코드 변경없이 어제 빌드는 괜찮 았고 오늘은 v11.0 버전 누락에 대한 불만으로 실패했습니다. .NET Framework 4.5.1은 어젯밤이 빌드 시스템에 자동 업데이트로 설치 / 업데이트되었습니다. 우리는 매개 변수 (또는 환경 변수)로 v10.0을 강제 할 것입니다. 그러나 이것은 확실히 우리를 놀라게했습니다 …
업데이트 : 더 이상한 점은 오늘의 msbuild 버전이 기본적으로 사용할 VisualStudioVersion을 결정하기 위해 sln 파일의 첫 번째 줄을 사용하는 것처럼 보이지만 어제 버전은 그렇지 않은 것 같습니다.
Format Version 12.00
수동으로 이것을 11.00으로 변경하는 것을 테스트했고 빌드가 다시 작동하기 시작했습니다.
우리의 경우, 2010 / 4.0에 대한 모든 것을 목표로하고 구축하고 있지만 일부 개발자는 VS2012를 준비하고 있습니다 (MS가 프로젝트 파일이 호환된다고 주장했기 때문에).이 특정 솔루션은 마지막으로 저장되었습니다 (몇 달 전). VS2012. 오늘 전에는 문제가되지 않았습니다.
답변
나는 같은 문제가 있었다. 위에 나열된 솔루션을 통해 해결되었습니다. 이 문제는 빌드 서버에서 적절한 버전의 Visual Studio 도구 (BuildTools)를 사용할 수 없기 때문에 발생합니다. 위에서 올바르게 지적했듯이 BuildTools를 설치하면 해결할 수 있지만 제 경우에는 옵션이 아닙니다.
다른 대안이 있습니다-Nuget 사용
Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3
시작 프로젝트를 식별하고 사용중인 Visual Studio 버전에 따라 web.targets를 설치합니다. 필요한 변경 사항이 포함 된 다음 파일이 수정됩니다.
packages.config에서 :
<package id="MSBuild.Microsoft.VisualStudio.Web.targets" version="14.0.0.3" targetFramework="net45" />
.csproj에서 :
<Import Project="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props" Condition="Exists('..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\build\MSBuild.Microsoft.VisualStudio.Web.targets.props')" />
도움이 되었기를 바랍니다!!! 행운을 빕니다,
건배,
답변
해킹했지만 c : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications *. *를 c : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0에 복사하여 해결했습니다. \ WebApplications *. *