Nice programing

'Microsoft.Build.Tasks.v14.0.dll'을 찾을 수 없기 때문에 Visual Studio 2015에서 빌드 할 수 없습니다.

nicepro 2021. 1. 10. 19:56
반응형

'Microsoft.Build.Tasks.v14.0.dll'을 찾을 수 없기 때문에 Visual Studio 2015에서 빌드 할 수 없습니다.


Visual Studio 2015에서 빌드하려고 할 때 다음 파일이 누락 되었습니까? 이 프로젝트는 이전에 VS2013에서 빌드되었습니다.

심각도 코드 설명 프로젝트 파일 줄 오류 "C : \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Build.Tasks.v14.0.dll"어셈블리에서 작업 팩토리 "CodeTaskFactory"를로드 할 수 없습니다. 파일 또는 어셈블리 'file : /// C : \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Build.Tasks.v14.0.dll'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.


어셈블리의 이름이 변경되었습니다. CodeTaskFactory MSBuild 작업에서 AssemblyFile 매개 변수를 ...로 변경합니다 (오류에이 작업이있는 대상 파일 이름이 있어야 함).

AssemblyFile="C:\Program Files (x86)\MSBuild\14.0\Bin\Microsoft.Build.Tasks.Core.dll"

누군가가 영리하고 이와 같은 MSBuild 속성을 사용하려고 시도했을 가능성이 있습니다. (MSBuild 14에서는 작동하지 않지만 12에서는 작동합니다) ...

AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v$(MSBuildToolsVersion).dll"

그냥 참고로 ... Microsoft.Build.Utilities.v12.0.dll로 이름이 변경된 것과 같은 다른 것들이 있습니다.Microsoft.Build.Utilities.Core.dll


Visual Studio 2017에서 저에게 도움이 된 것은 Microsoft.Build.Tasks.Core.dll을 복사하고 이름을 Microsoft.Build.Tasks.v15.0.dll로 변경하는 것입니다. build.tasks.v15.0.dll


제 경우에는 SFML.NET nuget 패키지의 문제였습니다.

빌드가 실패한 이유는 오래된 Nuget Baseclass.Contrib.Nuget.Output 구성 요소에 의존했습니다.

.Net 4.6으로 수동으로 업데이트 한 후 프로젝트 파일에서 모든 nuget staff를 삭제하고 프로젝트에서 파일을 삭제하고 Baseclass.Contrib.Nuget.Output의 모든 종속성을 다시 읽었습니다.


Visual Studio를 처음 다시 시작하면 나를 위해 일했습니다.

두 번째로이 오류가 다시 발생하고 업데이트했습니다.

Install-Package Baseclass.Contrib.Nuget.Output -Version 2.2.0-xbuild02


Visual Studio를 다시 시작하는 것으로 충분했습니다.

이전에 다른 작업을 수행하는 모든 MSBuild.exe 프로세스를 종료했으며 MSBuild.exe 프로세스가 없으면 오류가 발생한다고 생각합니다.


Gary의 답변에 따라 다음과 같이 매개 변수화했습니다.

<Choose>
  <When Condition="'$(MSBuildToolsVersion)'=='14.0'">
    <PropertyGroup>
      <TasksAssemblyName>Microsoft.Build.Tasks.Core</TasksAssemblyName>
    </PropertyGroup>
  </When>
  <Otherwise>
    <PropertyGroup>
      <TasksAssemblyName>Microsoft.Build.Tasks.v$(MSBuildToolsVersion)</TasksAssemblyName>
    </PropertyGroup>
  </Otherwise>
</Choose>
<UsingTask TaskName="SecondsSinceEpoch" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\$(TasksAssemblyName).dll">

내 솔루션 : "* .csproj"파일에서 두 행 제거 :

<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />

제 경우에는 루트에서 "ls.pubignore.wpp.targets"파일을 제거했습니다. 그리고 그것은 오류를 제거했습니다. :)


내 경우에는 VS2015에서 NuGet 패키지 관리자의 일부 패키지를 업데이트 한 다음 vs2015가 설치되지 않은 다른 컴퓨터에서 vs2013에서 동일한 솔루션을 열려고했습니다.

Microsoft Build Tools 2015를 설치하면 오류가 해결되었습니다. 그러면 GAC에 Microsoft.Build.Utilities.Core.dll이 추가되어 작동하게됩니다.

https://www.microsoft.com/en-in/download/details.aspx?id=48159


Visual Studio 2017의 경우 이것이 저에게 효과적이며 제공된 두 가지 솔루션이 혼합되어 있습니다. 둘 다 자체적으로 작동하지 않았으므로 이것이 새로운 답변으로 제출하는 이유입니다.

파일에서 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\VisualStudio\v15.0\CodeAnalysis\Microsoft.CodeAnalysis.Targets

교체 AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll">AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">

그런 다음 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll동일한 폴더에 이름을 가진 파일을 복사하십시오.Microsoft.Build.Tasks.v15.0.dll

참조 URL : https://stackoverflow.com/questions/31722877/cant-build-in-visual-studio-2015-because-microsoft-build-tasks-v14-0-dll-cann

반응형