[c#] 파일 또는 어셈블리 ‘Microsoft.Build.Framework'(VS 2017)를로드 할 수 없습니다.

“update-database”명령을 실행하려고하면 다음 예외가 발생합니다.

대상 데이터베이스에 적용되는 SQL 문을 보려면 ‘-Verbose’플래그를 지정하십시오. System.IO.FileNotFoundException : 파일 또는 어셈블리 ‘Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a’또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다. 파일 이름 : ‘Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a’

WRN : 어셈블리 바인딩 로깅이 꺼져 있습니다. 어셈블리 바인딩 실패 로깅을 사용하려면 레지스트리 값 [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD)를 1로 설정하십시오. 참고 : 어셈블리 바인딩 실패 로깅과 관련된 성능 저하가 있습니다. 이 기능을 해제하려면 레지스트리 값 [HKLM \ Software \ Microsoft \ Fusion! EnableLog]를 제거하십시오.

파일 또는 어셈블리 ‘Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a’또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정한 파일을 찾을 수 없습니다 .`



답변

나는 당신과 같은 문제가 있다고 생각합니다. 전체 오류 메시지를 저장하지 않았지만 오류 메시지는

파일 또는 어셈블리’Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a ‘또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.

난 비주얼 스튜디오 2017을 사용하고 있습니다 및하려고 노력했다 Update-DatabaseAdd-Migration.

문제를 해결하기 위해 Visual Studio를 닫고 다시 연 다음 다시 실행 Update-Database했습니다.

이렇게하면 문제가 해결 될 수도 있고 해결되지 않을 수도 있지만 도움이 될 경우를 대비하여 게시 할 것이라고 생각했습니다.


답변

로컬 빌드 스크립트는 이전 버전의 nuget.exe( 4.7.1.5393)를 사용하여 NuGet 패키지를 복원했습니다. Visual Studio 2019 버전으로 업데이트 한 후이 오류가 발생하기 시작했습니다 16.5.0. 최신 버전 nuget.exe( 5.4.0.6315)으로 업데이트 하면 문제가 해결되었습니다.

nuget.exehttps://www.nuget.org/downloads에서 다운로드 할 수 있습니다 .


답변

이 문제의 근본 원인은 devenv.exe.config파일의 상대 경로에서 비롯 됩니다 Microsoft.Build.Framework.dll(xml 태그 참조).

일부 Visual Studio 확장은 현재 디렉터리를 변경하고 상대 경로를 유효하지 않게 만듭니다.

이 문제를 해결하려면 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\디렉터리 에서이 파일을 엽니 다 . 모든 교체 ..\..\MSBuild\15.0\Bin\에 의해 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\.


답변

적어도 VS 2017 Professional 15.5.2 및 Entity Framework 6.1.1을 실행하는 내 환경에서 문제를 해결하는 것으로 보이는 해결 방법을 찾았습니다.

기본적으로 DLL (몇 가지 관련 항목 포함)을 GAC (Global Assembly Cache)에 설치하면 문제가 사라집니다.

이 단계를 따르세요:

  1. Visual Studio 2017의 실행중인 모든 인스턴스를 닫습니다.

  2. Visual Studio 2017 개발자 명령 프롬프트 시작

  3. 다음 명령을 입력하십시오 (Professional를 Enterprise 또는 Community 에디션으로 바꾸거나 그에 따라 경로를 조정하십시오).

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Framework.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Engine.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Conversion.Core.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll"
  1. Visual Studio 2017 다시 시작

본질적으로 .NET이 DLL을로드하려고 할 때 GAC (대부분의 경우)에 우선 순위가 부여되고 DLL이 이제 GAC를 통해 확인되므로 FileNotFoundException이 사라집니다.

다시 말하지만, 그것은 저에게 효과적이며 단순히 해결 방법입니다. 핵심 문제 자체를 해결하지는 않지만 적어도 EF 마이그레이션 작업을 시도 할 때 항상 VS를 다시 시작할 필요는 없으며 저에게 충분합니다.


답변

이것은 나를 위해 일했습니다 .2020 년부터 지원되지 않는 문제인 것 같습니다.

에서 Azure Build Pipeline> NuGet tool installer단계 변화 Version of NuGet.exe to install최신 버전, 등 5.4.0. https://dist.nuget.org/tools.json 에서 버전을 확인 하십시오 .

문제가 사라지고 이제 성공적으로 빌드됩니다.


답변

내 누락 된 파일 또는 어셈블리 버전이 질문과 다릅니다.

ASP.net 프로젝트를 게시하려고 할 때이 오류가 발생합니다.

Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Microsoft Build Tools 2015를 설치하여 문제를 해결했습니다.

내 문제는 VS 2017에서 VS 2015로 빌드 한 프로젝트를 VS 2017에 게시했기 때문이라고 생각합니다. 희망은 같은 문제를 가진 다른 사람들을 도울 수 있습니다.


답변

Visual Studio를 다시 시작해도 작동하지 않는 경우 작업 관리자 / 프로세스 탐색기로 이동하여 VBCSCompiler.exe 기술

여기에 이미지 설명 입력

Process Explorer 사용 제안