development

빌드 오류 : System.Runtime에 대한 참조를 추가해야합니다

big-blog 2020. 5. 13. 20:37
반응형

빌드 오류 : System.Runtime에 대한 참조를 추가해야합니다


새로운 ASP.NET MVC 5.1 솔루션을 준비 중입니다. NuGet 패키지를 추가하고 Zurb Foundation 등으로 설정하고 있습니다.

그것의 일부로, 휴대용 클래스 라이브러리 인 사내 NuGet 패키지에 대한 참조를 추가했으며 이것이 빌드 서버에서 문제를 일으키는 것으로 생각합니다.

TeamCity는 다음과 같이 빌드에 실패합니다.

'System.Object'유형이 참조되지 않은 어셈블리에 정의되어 있습니다. 어셈블리 'System.Runtime, Version = 4.0.0.0에 대한 참조를 추가해야합니다.

원래 Razor 웹 페이지를 컴파일 할 때 동일하거나 유사한 오류에 대한 수정 프로그램을 추가했습니다. web.config

<compilation ... >
  <assemblies>
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>

그러나 문제는 해결되지 않았습니다.


수정 사항을 구현하려면 먼저 기본적으로 다음과 같은 기존 web.config 컴파일 섹션을 펼치십시오.

<compilation debug="true" targetFramework="4.5"/>

일단 확장되면 지시에 따라 다음과 같은 새로운 구성 XML을 추가했습니다.

  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>

최종 web.config 태그는 다음과 같아야합니다.

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>

이 System.Runtime.dll 어셈블리에 대한 참조를 추가하면 문제가 해결되었습니다.

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll

명시 적 경로의 해당 파일이 빌드 서버에 존재하지 않지만

PCL 및이 Facades에 대한 문서를 찾은 후 자세한 정보를 다시 게시하겠습니다.

최신 정보

인터넷 전체의 외관 어셈블리에는 거의 아무것도 없습니다.

구글 :

(Facades OR Facade) Portable Library site:microsoft.com

허용 된 답변에 @PeterMajeed의 의견이 관련 문제를 해결하는 데 도움이되었습니다. 휴대용 라이브러리를 사용하지 않지만 TeamCity를 실행하는 새로운 Windows Server 2012 설치에서 동일한 빌드 오류가 있습니다.

설치 중 의 Microsoft .NET Framework 4.5.1 개발자 팩 (별도로 설치 한 후 문제를 처리했다 MS 빌드 도구 ).


나를 위해 일한 유일한 방법. web.config에 어셈블리 추가

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>

VS 2015 (MVC는 아님)의 일부 솔루션 및 한 워크 스테이션의 동일한 솔루션이지만 다른 워크 스테이션에서는이 문제가 발생했습니다. .NET 버전을 4.6으로 변경하고 PCL을 참조하면 오류가 나타납니다.

해결책은 간단합니다. 솔루션을 닫고 솔루션과 동일한 폴더에서 숨겨진 .vs 폴더삭제하십시오 .

다른 답변에서 제안한대로 누락 된 참조를 추가하면 문제가 해결되지만 참조를 다시 제거한 후에도 오류가 해결 된 상태로 유지됩니다.

TeamCity는 구성에 문제가 없었기 때문에 말할 수 없습니다. 그러나 디버깅 작업의 일부로 작업 카탈로그를 재설정해야합니다.


.NET 런타임과 대상 .NET 버전의 대상 팩을 설치하십시오.

개발자 팩은이 두 가지가 함께 제공되지만 현재 4.6 버전이 아닌 것이므로 두 항목을 별도로 설치해야합니다.

다운로드는 여기에서 찾을 수 있습니다 : http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#


그것은 오래된 문제이지만 지속적인 통합 서버에서 빌드 파이프 라인을 수정하기 위해 오늘 직면했습니다. 첨가

<Reference Include="System.Runtime" />

.csproj파일에 문제가 해결되었습니다.

A bit of context: the interested project is a full .Net framework 4.6.1 project, without build problem on the development machines. The problem appears only on the build server, which we can't control, may be due to a different SDK version or something similar.

Adding the proposed <Reference solved the build error, at the price of a missing reference warning (yellow triangle on the added entry in the references tree) in Visual Studio.

I hope this can help people in similar scenarios...


On our Tfs 2013 build server I had the same error, in a test project. with the main web project running on .Net 4.5.1.

I installed a nuGet package of System Runtime and added the reference from packages\System.Runtime.4.3.0\ref\net462\System.Runtime.dll

That solved it for me.


I needed to download and install the Windows 8.0 (and not 8.1) SDK to make the error disappear on my TeamCity server.

https://developer.microsoft.com/en-us/windows/downloads/windows-8-sdk


I was also facing this problem trying to run an ASP .NET MVC project after a minor update to our codebase, even though it compiled without errors:

Compiler Error Message: CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Our project had never run into this problem, so I was skeptical about changing configuration files before finding out the root cause. From the error logs I was able to locate this detailed compiler output which pointed out to what was really happening:

warning CS1685: The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll'

c:\Users\Admin\Software Development\source-control\Binaries\Publish\WebApp\Views\Account\Index.cshtml(35,20): error CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\meseems.webapp\68e2ea0f\8c5ee951\assembly\dl3\52ad4dac\84698469_3bb3d401\System.Collections.Immutable.DLL: (Location of symbol related to previous error)

Apparently a new package added to our project was referencing an older version of the .NET Framework, causing the "definition in multiple assemblies" issue (CS1685), which led to the razor view compiler error at runtime.

I removed the incompatible package (System.Collections.Immutable.dll) and the problem stopped occurring. However, if the package cannot be removed in your project you will need to try Baahubali's answer.


I had this problem in a solution with a Web API project and several library projects. One of the library projects was borking on build, with errors that said the Unity attributes weren't "valid" attributes, and then one error said I needed to reference System.Runtime.

After much searching, reinstalling the 4.5.2 Developer Pack, and nothing working, I figured maybe it was just a version mismatch. So I looked at the properties of every project, and one of the very base libraries was targeting 4.5 while every other one was targeting 4.5.2. I changed that one to also target 4.5.2 and the errors went away.


i added System.Runtime.dll to bin project and it worked :)


I copy the file "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.1\Facades\system.runtime.dll" to bin folder of production server, this solve the problem.


install https://www.microsoft.com/en-us/download/details.aspx?id=49978 Microsoft .NET Framework 4.6.1 Developer Pack and add this line of code in Web.config file

<compilation debug="true" targetFramework="4.5">
          <assemblies>
            <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
          </assemblies>
        </compilation>``

Removing the reference over the Nuget Package Manager and re-adding it solved the problem for me.

참고URL : https://stackoverflow.com/questions/22822406/build-error-you-must-add-a-reference-to-system-runtime

반응형