programing

v11.0\웹 응용 프로그램\Microsoft.파일이 실제로 v10을 참조할 때 WebApplication.targets를 찾을 수 없습니다.

iphone6s 2023. 7. 16. 12:51
반응형

v11.0\웹 응용 프로그램\Microsoft.파일이 실제로 v10을 참조할 때 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는 현재 MSBuild를 Visual Studio 자체의 일부이자 별도의 설치 프로그램(http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of-visual-studio.aspx) )으로 릴리스하고 있습니다.

은 솔션 위새치다버전한 MSBuild.exe를에 이었습니다.C:\Program Files (x86)\MSBuild\12.0\Bin제가 그렇게 하자 모든 표적 오류가 사라졌습니다.

편집 1

설명에서 언급한 것처럼 MSBuild의 새 버전마다 새 디렉터리가 함께 제공됩니다.2015의 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가 설치되지 않은 빌드 서버가 있는 경우 다음 방법으로 이 문제를 해결할 수 있습니다.

MSBuild 설치.마이크로소프트.Visual Studio.Web.targets 패키지를 사용자 솔루션으로 지정합니다.

.svroj 파일에서 이 줄 바꾸기:

<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" />

편집

. 즉, replace @joedragons는 nuget의 nuget과 합니다.targets.11.0.2.1와 함께targets.x.x.x.x현재 버전에 해당합니다.

이 문제에 대한 간단한 해결책:

다음 경로로 이동합니다.

C:\프로그램 파일(x86)\MSBuild\Microsoft\Visual Studio

Visual Studio 2010, 2012 또는 2013 설치에 따라 최신 버전 V10.0, v11.0, v12.0이 표시됩니다.

알았다.WebApplications최신 버전의 디렉토리에서 폴더를 만들고 다른 디렉토리에 붙여넣습니다.

문제가 해결되어야 합니다.

무료 Visual Studio 2012 Shell(Isolated)을 설치하면 WebApplications v11 MSBuild 파일이 설치됩니다.Visual Studio 2012의 전체 설치보다 가벼우며 라이센스 문제가 없습니다.

와우. 방금 우리의 빌드 기계에서도 같은 일이 발생했습니다.VS2010과 타겟 .NET 4.0을 사용합니다.프로젝트 파일은 이러한 대상의 v10.0 버전을 명시적으로 가져옵니다.코드가 변경되지 않은 상태에서 어제는 빌드가 정상적으로 작동했으며 오늘은 v11.0 버전이 누락되었다는 불만과 함께 실패하고 있습니다..NET Framework 4.5.1은 어젯밤 이 빌드 시스템에 자동 업데이트로 설치/업데이트되었습니다.매개 변수(또는 환경 변수)를 사용하여 v10.0을 강제 적용할 예정입니다. 하지만 이것은 확실히 우리를 놀라게 했습니다.

업데이트: 더욱 이상한 것은 오늘날의 msbuild 버전이 기본적으로 사용할 Visual Studio 버전을 결정하기 위해 sln 파일의 첫 줄을 사용하는 것처럼 보이는 반면, 어제 버전은 다음과 같은 경우가 아니라는 것입니다.

Format Version 12.00

우리는 이것을 11.00으로 수동으로 변경하는 것을 테스트했고 빌드가 다시 작동하기 시작했습니다.

우리의 경우 2010/4.0을 위한 모든 것을 목표로 삼고 구축하고 있음에도 불구하고 MS가 프로젝트 파일이 호환된다고 주장한 이후 일부 개발업체는 VS2012를 준비하고 있으며, 이 특정 솔루션은 VS2012에서 마지막으로 저장(수개월 전)되었습니다.오늘 전에는, 그것이 문제를 일으키지 않았습니다.

저도 같은 문제가 있었습니다.위에 나열된 솔루션을 통해 해결됩니다.이 문제는 빌드 서버에서 적절한 버전의 Visual Studio Tools(빌드 도구)를 사용할 수 없기 때문에 발생합니다.위에서 올바르게 지적했듯이 빌드를 설치하면 이 문제를 해결할 수 있습니다.도구를 사용하지만 제 경우에는 옵션이 아닙니다.

여기 다른 대안이 있습니다 - Nuget 사용

Install-Package MSBuild.Microsoft.VisualStudio.Web.targets -Version 14.0.0.3

사용 중인 Visual 스튜디오 버전을 기준으로 시작 프로젝트를 식별하고 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\웹 응용 프로그램*.c:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v11.0\웹 응용 프로그램*.*

11월 말에 TeamCity 설치, MSBuild 설치 또는 소스 코드의 구성을 변경하지 않고 이 오류가 발생했습니다.내 빌드 서버에는 Visual Studio가 설치되어 있지 않으며 VS2010에서 VS2012로의 변경은 8월 말에 아무런 문제 없이 이루어졌습니다.

내 MSBuild 버전은 4.0.30319입니다.18408, 내 빌드 서버는 윈도우즈 서버 2008 R2 SP1이며 TeamCity v6.5.3입니다.

저는 영향을 받지 않은 다른 빌드 서버에서 v11 폴더를 복사하여 문제를 해결했습니다.

제 생각에는 이런 일이 두 가지 방식으로 일어날 수 있었을 것 같습니다.

  1. v11 폴더 삭제를 트리거하는 내용이 업데이트되었습니다..NET에 대한 Windows Update 같은 건가요?

  2. 뭔가 업데이트되어 TeamCity/MS Build 구성이 v10을 사용하던 것에서 v11로 변경되었으며 v11이 존재하지 않아 빌드가 작동하지 않습니다.

12월 3일에 .NET Framework 4.5.1 업데이트를 받았는데, 그 이유가 될 수 있습니까?

브르그즈

요나스

저는 최근에 같은 문제로 꼼짝 못하고 있습니다.그리고 제 결론은 VS의 모든 버전(v10, v11, v12)이 다음과 같이 빌드 변수의 경로를 변경한다는 것입니다.MSBuildBinPath.

따라서 VS의 정확한 버전을 지정하는 것은 해킹이 아닙니다. 적절한 버전의 파일이 설치되어 있지 않을 수도 있기 때문입니다.따라서 매개 변수를 지정하고 컴퓨터에 있는 대상을 사용하는 것이 좋습니다.

드문 경우이긴 하지만 특정 버전의 VS 및 Web Deploy 패키지를 설치해야 할 수도 있습니다.저의 경우에는 버전만으로 문제를 해결할 수 있었습니다.

다음과 같이 VisualStudioVersion 속성을 추가할 수 있습니다.

<ItemGroup>
  <ProjectToBuild Include="$(MSBuildProjectDirectory)\..\MySolution.sln">
    <Properties>Configuration=$(BuildConfiguration);WarningLevel=0;VisualStudioVersion=12.0</Properties>
  </ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>

제가 이 문제를 해결하는 방법을 찾고 있을 때, 거의 모든 사람들이 누락된 MSBUILD 폴더를 복사하거나 일부 버전의 SDK를 설치할 것을 권장했습니다.

다행히도, 저는 도노반 브라운의 놀랍도록 도움이 되는 게시물을 발견했습니다: http://donovanbrown.com/post/So-sick-of-MicrosoftWebApplicationtargets-was-not-found-build-errors!

즉, 빌드 정의에서 사용해야 하는 Visual Studio 버전을 구성하는 것입니다.

마우스 오른쪽 버튼을 클릭합니다. -> "빌드 정의 편집..."

"프로세스" -> "3"로 이동합니다.고급"

를 사용하여 "MS 빌드 인수"를 설정합니다.

/p:VisualStudioVersion=12.0

언급URL : https://stackoverflow.com/questions/17433904/v11-0-webapplications-microsoft-webapplication-targets-was-not-found-when-file-a

반응형