내 웹 사이트를 서버에 업로드하려고했습니다. 내 로컬 호스트에서 제대로 작동했기 때문에 내 localhost wwwroot
폴더의 모든 것을 서버 에 업로드 하고 연결 문자열을 변경했습니다.
그러나 다음과 같은 오류가 있습니다.
Exception information:
Exception type: InvalidOperationException
Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
at RouteDebug.PreApplicationStart.Start()
프로젝트는 nopcommerce
.
이 오류를 해결하려면 어떻게해야합니까?
답변
답변
Reference Cleaning을 수행 한 후, 제거 Microsoft.Web.Infrastructure
되었지만 packages.config 파일 에서는 제거 되지 않았습니다. 를 사용하여 다시 추가하려고 시도한 후 Package Manager Console
Visual Studio는 이미 설치되어 있다고 표시하며 제거 되었기 때문에 false입니다.
그런 다음 packages.config
파일 에서 코드 줄을 제거했습니다.
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
명령을 다시 실행했습니다.
PM> Install-Package Microsoft.Web.Infrastructure
그 후에 이제 잘 작동합니다.
답변
여기 에서 다운로드 한 AspNetMVC3ToolsUpdateSetup을 설치 하면 참조를 추가하지 않고도이 문제가 해결됩니다.
답변
답변의 수에도 불구하고 IMHO가 상황을 좀 더 명확하게 만드는 다른 답변을 추가하겠습니다.
으로 롭 과 wrightmail 이미 언급 Microsoft.Web.Infrastructure
(링크가 필요하지, 당신은 NuGet 패키지 관리자에서 그것을 가지고)는 NuGet 패키지입니다.
분명히 그것은 당신의 프로젝트에 의해 참조되었고 갑자기 사라졌습니다. 여러 가지 이유가있을 수 있지만 중요한 것은 다음 과 같은 방법으로 Visual Studio에서 자동 패키지 복원을 사용하도록 설정했을 수 있다는 것입니다 .
- 솔루션 용 NuGet 패키지 관리 (솔루션 탐색기의 컨텍스트 메뉴),
- NuGet이 누락 된 패키지 (설정)를 다운로드하도록 허용
- Visual Studio에서 빌드하는 동안 누락 된 패키지를 자동으로 확인 (설정),
특정 패키지는 수동 재설치가 필요할 수 있습니다. NuGet을 혼동하는 것이 무엇인지 모르고 참조를 수동으로 제거 할 수도 있지만 여기에 일반적으로 이러한 경우에 적용하는 솔루션이 있습니다. 다음 PM 콘솔은 원래 버전을 보존하면서 패키지를 복원하는 데 도움이됩니다 (기존의 새 버전으로 업데이트하지 않음).
업데이트 패키지 Microsoft.Web.Infrastructure-재설치
프로젝트에서 사용했을 수있는 “이전”기능을 제거 할 수있는 새 버전으로 실수로 기존 패키지를 덮어 쓰지 않으려면 버전 보존이 필요할 수 있습니다.
그리고 조금 길지만 버전이 변경되지 않는다는 증거로, 다음은 명령이 실행될 때의 출력입니다.
PM> Update-Package Microsoft.Web.Infrastructure -Reinstall
Attempting to gather dependencies information for multiple packages with respect to project 'Samples.NuGet\DemoApp\DemoApp', targeting '.NETFramework,Version=v4.5.2'
Attempting to resolve dependencies for multiple packages
Resolving actions install multiple packages
...
Package removal starts here...
...
Removed package 'Microsoft.AspNet.Web.Optimization 1.1.3' from 'packages.config'
Successfully uninstalled 'Microsoft.AspNet.Web.Optimization 1.1.3' from DemoApp
Removed package 'WebGrease 1.5.2' from 'packages.config'
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\uninstall.ps1'
Successfully uninstalled 'WebGrease 1.5.2' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package 'Microsoft.Web.Infrastructure 1.0.0.0' from 'packages.config'
Successfully uninstalled 'Microsoft.Web.Infrastructure 1.0.0.0' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package 'Antlr 3.4.1.9004' from 'packages.config'
Successfully uninstalled 'Antlr 3.4.1.9004' from MvcLenseApp
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\Lense.Mvc5\packages'
--- Install packages (in reverse order) ---
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'Antlr.3.4.1.9004' to 'packages.config'
Successfully installed 'Antlr 3.4.1.9004' to DemoApp
...
More package installs here. Omitted for brevity...
...
Package 'Microsoft.Web.Infrastructure.1.0.0' already exists in folder 'D:\Projects\Lense.Mvc5\packages'
Added package 'Microsoft.Web.Infrastructure.1.0.0' to 'packages.config'
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0' to MvcLenseApp
...
More package installs here. Omitted for brevity...
...
Package 'WebGrease.1.5.2' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'WebGrease.1.5.2' to 'packages.config'
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\install.ps1'
Successfully installed 'WebGrease 1.5.2' to DemoApp
Package 'Microsoft.AspNet.Web.Optimization.1.1.3' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'Microsoft.AspNet.Web.Optimization.1.1.3' to 'packages.config'
...
End of package re-install.
...
Successfully installed 'Microsoft.AspNet.Web.Optimization 1.1.3' to DemoApp
PM>
물론 모든 패키지를 다시 설치하려면 NuGet here 및 here의 업데이트 / 설치 명령에 익숙해 져야 할 수 있습니다 .
답변
내 dev box에서 작동했지만 어셈블리가 프로젝트에 추가되지 않았습니다. NuGet에서 Microsoft.Web.Infrastructure를 검색하고 거기에서 설치합니다. 그런 다음 로컬 복사가 선택되어 있는지 확인하십시오.
답변
기존 프로젝트가있는 VS2015의 새 Windows 10 컴퓨터에서이 문제가 발생했습니다. 패키지 관리자 3.4.4. 복원 패키지가 활성화되었습니다.
복원이 완전히 작동하지 않는 것 같습니다. 패키지 관리자 명령 줄에서 다음을 실행해야했습니다.
Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall
이로 인해 복원이 수행하지 않은 솔루션 파일이 다음과 같이 변경되었습니다.
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
<Private>True</Private>
</Reference>
솔루션 파일의 ItemGroup 섹션에 위의 요소를 추가하면 .. \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infrastructure.dll이 존재하는 경우 문제도 해결됩니다.
-Reinstall을 수행하는 것이 더 쉽지만 패키지 복원과 다른 점을 이해하는 것이 좋습니다.
답변
Resharper는 Microsoft.Web.Infrastructure를 사용하지 않는 참조로 감지하여 삭제했습니다. 로컬에서 잘 작동했지만 dev에 게시 한 후 동일한 오류가 발생했습니다.
결론, Resharper에서 사용하지 않는 것으로 표시된 참조를 삭제할 때주의하십시오.