Visual Studio 2012 Web API 프로젝트가 실행되지 않음-Newtonsoft.Json을 찾을 수 없음
깨끗한 솔루션을 실행하고 다시 빌드 한 후 MVC 4 Web API 프로젝트가 작동을 멈 춥니 다. Newtonsoft.Json을 찾을 수 없습니다.
MS가 현재 이것을 기본 JSON 직렬 변환기로 사용하고 있음을 알고 있지만 프로젝트의 참조 목록에는 없으며 이미 설치되었다고 NuGet에서 추가 할 수 없습니다.
누구든지 무엇이 잘못 될 수 있는지 여기에서 알고 있습니까?
전체 스택 추적 :
[FileNotFoundException : 파일 또는 어셈블리 'Newtonsoft.Json, 버전 = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.]
MvcWebRole1.WebApiApplication.Application_Error () in d : \ Data \ Source Controlled Projects \ georace \ georace \ Server \ GeoRaceServer \ MvcWebRole1 \ Global.asax.cs : 70[HttpException (0x80004005) : 파일 또는 어셈블리 'Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext context, HttpApplication app) +12838633
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext, HttpContext context, MethodInfo [] handlers) +175
System.Web. HttpApplication.InitSpecial (HttpApplicationState state, MethodInfo [] 핸들러, IntPtr appContext, HttpContext 컨텍스트) +304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, HttpContext context) +404
System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext) +475[HttpException (0x80004005) : 파일 또는 어셈블리 'Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed'또는 해당 종속성 중 하나를로드 할 수 없습니다. 지정한 파일을 찾을 수 없습니다.]
System.Web.HttpRuntime.FirstRequestInit (HttpContext 컨텍스트) +12851296 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext 컨텍스트) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, HttpContext 컨텍스트) + 12679949
Ok-다른 사람이이 MS 버그로 인해 문제가 발생할 경우를 대비하여 자신을 해결하는 방법을 찾았습니다. 문제는 기본적으로 패키지에 이미 포함되어 있으므로 NuGet 참조를 추가 할 수 없다는 것입니다. 그래서...
- packages.config를 엽니 다.
- Newtonsoft.Json 항목을 삭제하십시오.
- 저장 및 구축
- NuGet에서 Newtonsoft.Json을 다시 추가합니다.
- 빌드 및 실행
모든 패키지의 이미 당신이 원하는 NuGet으로 설치 그냥 다음 명령을 입력 다시 설치 패키지 관리자 콘솔을 :
모든 프로젝트에서 업데이트 :
Update-Package Newtonsoft.Json -Reinstall
특정 프로젝트에서 업데이트
Update-Package Newtonsoft.Json -Reinstall -Project My.App
나 에게이 오류를 수정 한 유일한 방법은 누락 된 섹션을 내 web.config 파일에 추가하는 것이 었습니다.이 답변은 https://stackoverflow.com/a/20414714/940783입니다.
추가해야 할 사항은 다음과 같습니다.
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
다른 SO 기고자들이 언급 한 몇 가지 옵션과 새로운 옵션을 결합했습니다.
첫째, Nuget 2.1에 몇 가지 문제가있는 것으로 밝혀졌으며이 문제는 버그로 기록되었으며 2.2.2에서 수정되었습니다. 여기를 참조하십시오 : https://nuget.codeplex.com/workitem/3050
그래서 다음 단계를 수행했습니다.
- 링크에 따라 Nuget 버전을 2.2.2로 업데이트했습니다.
- NUget에서 제거하여 내 프로젝트에서 Json에 대한 모든 참조를 제거했습니다 (프로젝트를 마우스 오른쪽 단추로 클릭하고 패키지를 찾은 다음 제거합니다 (이 경우에도 해당되지 않음).
- 컴퓨터에서 패키지 파일을 물리적으로 삭제했습니다. 여기에서 패키지 파일을 찾았습니다 : //projectdir/packages/Newtonsoft.JSON
- 물리적 디렉토리 (//projectname/packages.config)에서 packages.config 파일을 삭제했습니다.
- 이 작업이 모두 완료되면 Nuget을 통해 Newtonsoft를 다시 추가 한 다음 다시 빌드하고 작동했습니다.
나는 같은 문제가 있었다 (VS2012에서). 대답이 도움이되지 않았습니다. 마지막으로 다음과 같이 해결했습니다.
1) 여기에서 도구-> 확장 및 업데이트로 이동하여 "NuGet 패키지 관리자"를 업데이트 (또는 설치) 한 다음 "온라인"으로 이동하여 "빠른 NuGet 추가"및 "NuGet 참조"를 설치합니다.
2) 1) 프로젝트에서 "참조"를 마우스 오른쪽 버튼으로 클릭하고 "설치된 패키지"에서 "Nuget 패키지 관리"를 선택하여 Json.NET을 찾습니다. 제거를 클릭합니다. 지금은이 작업을 수행 할 수 없지만 먼저 제거해야하는 항목이 표시됩니다 (일부 ASP Web Api 클라이언트). 따라서 이들을 모두 제거하고 "Json.NET"을 다시 제거해보십시오. 이제 "온라인"으로 이동하여 "Json.NET", "ASP.NET 웹 API 클라이언트 라이브러리"및 "ASP.NET 웹 API 클라이언트 OData"를 설치하십시오.
3) Global.asax에서 "WebApiConfig.Register (GlobalConfiguration.Configuration);"행 삭제
솔루션을 구축하고 모든 소리가 괜찮습니다 .. 나는 이것이 누군가를 도울 수 있기를 바랍니다 :) gl
프로젝트에 포함 된 오래된 로컬 복사본을 가리키는 JSON.NET에 대한 '이전 스타일'(프리 너겟) 참조가 있는지 확인하십시오.
I had an old Reference\Lib\JSON.NET
which was in my reference path and getting priority.
Check that the JSON.NET properties page is pointing to the expected Nuget package version.
I had this problem on a Team Server build which deployed live. I had to fix my original solution and do a clean build to make sure the old Reference\Lib\
DLL wasn't being picked up.
In my case I checked out a colleague's project which somehow turned my Newtonsoft.Json reference bad - so I had to remove it. Right click on the project -> Manage NuGet Packages. On the left side click "Installed Packages" then select Json.NET and uninstall it. In my case I had to uninstall other dependent packages also (Microsoft ASP.Net Web API and others). Choose "Online" on the left side and search for Json.Net, re-install it.
I was having the same FileNotFoundException and it turns out that I already have the reference to Newtonsoft.Json on my project, BUT the "Copy Local" property wasn't set to TRUE. Just set it to TRUE so the dll gets copied to the output directory if this is your case too.
I tested everything that was said here and nothing worked. In my case I had a path folder like this.
- #Projects/Web/App/...
The # the cause of my problem. I removed the # and worked fine.
What caused my problem with Newtonsoft.json was slightly different. I had developed a Windows app built against .Net 4.5. I later found out that the customer's environment only supported .Net 4.0. I had copied the solution to a new area to preserve the .Net 4.5 work and changed the Solution Properties to Microsoft.Net 4.0. I got the error that Newtonsoft.json could not be found and was I missing a reference.
I followed the procedures stated above for removing the packages.config; removing Newtonsoft.json; ensuring that Newtonsoft.json was removed from the \packages directory; then reinstalling Newtonsoft.json from NuGet. I was able to compile and run the application with .Net 4.0
Prior to this the packages.config file showed that the version of .Net that Newtonsoft.json targeted was .Net 4.5. Removing and adding the Newtonsoft.json now has the target as .Net 4.0.
I did this by mistake, and it sorted it self out fine.
Having started a new VS 2012 project I used NuGet to install Newtonsoft.JSON, as mentioned version 4.5.6 is already installed, and I was impressed to see that this was uninstalled and 4.5.10 installed.
Sweet.
You could try to install the SocialAuth.Net package with the ‑IgnoreDependencies flag, then installing the dependencies manually and making sure that you only install the latest version of Json.Net library.
Then at runtime the SocialAuth.Net package would respect the assembly redirect and load Json.Net (v4.5) instead of the old version.
I had the same problem in VS2012 express, and I managed to install it from
TOOLS -> NuGet Package Manager -> Manage NuGet Packages for Solution
There I found and installed Newtonsoft Json. It wasn't installed in none of the projects from solution by then.
'development' 카테고리의 다른 글
options_for_select 태그에서 선택 목록의 첫 번째 항목에 공백 포함 (0) | 2020.12.07 |
---|---|
jQuery에서 배열을 복제하는 방법이 있습니까? (0) | 2020.12.06 |
영숫자 문자 만 허용하도록 EditText를 제한하는 방법 (0) | 2020.12.06 |
내 Mac에서 xcode 버전을 기본값으로 설정하는 방법은 무엇입니까? (0) | 2020.12.06 |
'is'키워드는 파이썬에서 어떻게 구현됩니까? (0) | 2020.12.06 |