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


87

"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'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정한 파일을 찾을 수 없습니다 .`


1
독일어에서이 오류 메시지는 "Die Datei oder Assembly"Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "oder eine Abhängigkeit davon wurde nicht gefunden"입니다.
Uwe Keim

답변:


91

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

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

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

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

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


6
예,이 경우 "Turn-It-Off-And-On-Again"이 올바른 해결 경로 인 것처럼 보입니다.
대런 오스터

16
이것은 효과가 있지만 정답으로 생각하지 않습니다. VS를 다시 시작하지 않고 한 번에 영원히 수정하고 싶습니다.
Stanislav

1
지금 마이그레이션 후 매번 발생하며 작동하려면 전체 PC를 재부팅해야합니다.
OverMars 2017

3
제안 된 모든 솔루션을 시도했습니다. 그들 중 누구도 문제를 영구적으로 해결하지 못하는 것 같습니다. Visual Studio를 계속 다시 시작해야합니다.
Augusto Barreto

4
이것은 Github의 미해결 문제입니다. github.com/aspnet/EntityFramework6/issues/382
Bil Simser 2018 년

99

로컬 빌드 스크립트는 이전 버전의 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에서 다운로드 할 수 있습니다 .


27
빌드 서버에 VS2019 만 설치했을 때 그 문제에 직면했습니다. Azure DevOps 빌드에서이 문제를 해결하기 위해 NuGet 도구 설치 관리자 단계에서 버전 5.4.0을 요청합니다.
Elder Smash

3
내 TeamCity에서 4.3.0에서 5.6으로 업그레이드했습니다. 이것은 내 문제를 해결했습니다. 감사!
Esaith

3
그게 다야. 무리 감사! 4.4.1에서 5.4.0으로 이동했습니다.
DaleyKD

2
@ElderSmash 우리도 Azure DevOps 빌드를 사용하고 있습니다. 우리의 경우에는 최신 버전을 지정하지 않아도 NuGet 설치 관리자 단계를에서 NuGetToolInstaller@0로 업데이트하여 문제가 해결되었습니다 NuGetToolInstaller@1. 그러나 이것이 문제의 근본 원인을 수정하는지 아니면 수정이 로컬 캐시를 지우는 것의 부작용 일뿐입니다.
MarkusM

2
@ElderSmash 정확히 제 문제이자 해결책이었습니다. 감사합니다!
Danie

41

이 문제의 근본 원인은 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\.


Visual Studio Professioal도 사용 중입니다. 이 오류가 여러 번 표시됩니까?
Shan

IDE (커뮤니티 버전) 아래에 MSBuild 폴더가 없었고 "C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community"에서 MSBuild를 복사했는데 아무것도 수정하지 않았습니다.
OverMars 2017

1
2017 Pro를 사용 중이며 이로 인해 문제가 해결되었습니다. +1
Tom Wright

2
참고이 수정을 한 후 VS2017를 업데이트 할 경우, 다시 devenv.exe.config 업데이트해야 할 수도
마이크 피터슨

2
이 답변은 두 번째로 저에게 도움이되었습니다 .VS2017을 업데이트 한 후 @MikePeterson이 말한 것처럼 다시해야합니다.
James Monger

34

적어도 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를 다시 시작할 필요는 없으며 저에게 충분합니다.


1
나를 위해 일했습니다. Visual Studio 2017 개발자 명령 프롬프트는 C : \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Visual Studio 2017 \ Visual Studio Tools에 있으며 관리자로 실행해야합니다.
David Létourneau

2
참고-Microsoft가 제품을 업그레이드하고 GAC 항목이 유효하지 않게 될 때 문제가 발생할 수 있습니다 (최신 버전 또는 경로 변경 .. pro vs enterprise 등). 특히 최신 15.8.0으로 업그레이드 할 때 문제가되는 경우 프로젝트가로드되지 않으면 (이 솔루션을 사용했기 때문에) 여기를 참조하십시오. developercommunity.visualstudio.com/content/problem/311136/…
Barry

11

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

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

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


사용 된 너겟 버전을 업데이트하는 것도 문제를 해결하는 방법이었습니다.
NP83

7

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

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

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

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

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


이것은 나를 위해 온 프레미스 TFS에서 CI 빌드를 수정하는 데 도움이되었습니다. 내 빌드 서버 중 하나에 이러한 도구가 없었고 매우 유사한 문제로 계속 실패했습니다.
Budhead2004

4

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

여기에 이미지 설명 입력

Process Explorer 사용 제안


1
이 솔루션을 시도하고 있습니다. "Visual Studio를 다시 시작해도 작동하지 않는 경우 작업 관리자 / 프로세스 탐색기 및 기술 VBCSCompiler.exe로 이동"하고 제대로 작동합니다.
Mohammad Jihad Helal


2

제 경우에는 (아마도 NuGet-Update) 무언가가 web.config-File에 AssemblyBinding을 추가했습니다.

<dependentAssembly>
    <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" />
</dependentAssembly>

해당 dependentAssemby-Entry를 제거한 후 프로젝트를 다시 게시 할 수 있습니다.


2

이것은 나를 위해 일했습니다. 너겟 복원 명령을 실행할 때 오류가 발생합니다. Nuget 버전 4.6.2. 이 문제를 해결하는 방법에는 두 가지가 있습니다.

Nuget 4.8.2 이상을 사용하십시오. gacutil / i "C : \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll


1

우리는이 문제가 있었고, 우리의 경우에 우리가해야 할 일은 다음과 같습니다.

문제는 ] (IDbCommandInterceptor)를 호출 하는 데이터베이스 명령 인터셉터가 구성되어 있었고 HttpRuntime.Cache["somekey"어떤 이유로 이로 인해 마이그레이션 명령이 실행되지 못했습니다. 이 의존성을 제거한 후 모든 명령이 완벽하게 실행되었습니다. 아마도 HttpRuntimeBuild Framework dll을 찾지 못했습니까?

따라서 마이그레이션 명령이 비슷한 문제가 있는지 확인하지 못하면 전체 호출 스택 을 확인하십시오.


매우 흥미로운 점은 스택 추적에 HttpContext.Current를 사용하는 메서드 호출이 포함되어 있습니다. 이것을 제거하면 문제가 제거되었습니다.
Timores

0

macOS에서 XCode / Mono 구성 요소를 업데이트 할 때 동일한 문제가 발생했습니다.

해결책은 Mac 용 Visual Studio를 최신 버전으로 업데이트하는 것입니다.

새로운 XCode / Mono 버전과 함께 설치된 .NET Core 3.0 패키지의 새로운 MSBuild 도구를 사용하는 데 문제가 있다고 생각합니다.


0

이미 게시 해 주신 분들께 감사드립니다. 내 상황은 위의 조합으로 해결되었습니다. 여러 버전의 Visual Studio (2015, 2017, 2019)가 있습니다. 어느 시점에서 MSBUILD의 버전이 15.1에서 15.9로 바뀌었고 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.config파일이 15.9 라이브러리를 가리 키도록 업데이트하여이 문제를 해결했습니다 . 다음은 항목 중 하나의 예입니다.

<dependentAssembly>
      <assemblyIdentity name="Microsoft.Build.Utilities.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
      <bindingRedirect oldVersion="2.0.0.0-99.0.0.0" newVersion="15.9.0.0"/>
      <codeBase version="15.9.0.0" href="..\..\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll" />
</dependentAssembly>

2
당신의 모범이 사라진 것 같습니다.
Jammer

0

Visual Studio 2019 Community Edition 사용. 운이 좋지 않고 다른 솔루션을 시도했지만 NuGet 캐시를 지운 후 문제가 해결 된 것처럼 보였습니다. 여기에 이미지 설명 입력

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