programing

동적 식을 컴파일하는 데 필요한 하나 이상의 유형을 찾을 수 없습니다.Microsoft에 대한 참조가 누락되어 있습니까?CSSharp.dll 및 시스템.Core.dll?

newsource 2023. 5. 10. 21:12

동적 식을 컴파일하는 데 필요한 하나 이상의 유형을 찾을 수 없습니다.Microsoft에 대한 참조가 누락되어 있습니까?CSSharp.dll 및 시스템.Core.dll?

Microsoft Visual C# 2010에서 이 코드를 컴파일하려고 합니다.

using System;
using System.Globalization;


class main
{
    static void Main()
    {

        dynamic d;
        d = "dyna";
        Console.WriteLine(d);    
    }
}

하지만 이 두 가지 오류가 있습니다.

오류 1 미리 정의된 유형 'Microsoft.CShap. 런타임 바인더.바인더'가 정의되거나 가져오지 않았습니다.

오류 2 동적 식을 컴파일하는 데 필요한 유형을 하나 이상 찾을 수 없습니다.Microsoft에 대한 참조가 누락되어 있습니까?CSSharp.dll 및 시스템.Core.dll?

는 다른 게시물을 읽었지만 C#이 처음이라 무엇이 문제인지 이해할 수 없었습니다.특히 이것들은 무엇과 어디서 소위 말하는가..config파일..

솔루션 탐색기 창에서 참조를 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택한 다음 로 이동합니다.NET 탭에서 Microsoft를 찾아 추가합니다.C 샤프.

또는 Microsoft를 추가합니다.CSharp NuGet 패키지.

Install-Package Microsoft.CSharp

프로젝트가 대상인지 확인합니다.NET Framework 4.0. Visual Studio 2010은 을 지원합니다.NET 3.5 프레임워크 대상도 있지만, .NET 3.5는 다음을 지원하지 않습니다.dynamic키워드

프로젝트 속성에서 프레임워크 버전을 조정할 수 있습니다.자세한 내용은 http://msdn.microsoft.com/en-us/library/bb398202.aspx 을 참조하십시오.

reference back을 제거하고 추가해도 오류가 해결되지 않는 것을 제외하고는 동일한 문제가 발생하여 변경하였습니다.순 버전 원본4.5로.4.5.1.

이를 위해 다음 사이트로 이동합니다.web.config다음 행을 파일로 작성하고 변경합니다.

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

여기까지

<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />

다시 빌드합니다.

ViewBag 아래의 빨간 선은 3개월 동안 나의 골칫거리였습니다.Microsoft만 제거하면 됩니다.프로젝트에서 참조를 샤프한 다음 다시 추가합니다.

저도 같은 문제를 겪었고 "Microsoft"를 제거함으로써 해결했습니다.프로젝트에서 CSSharp" 참조를 추가한 다음 다시 추가했습니다.

Microsoft에 대한 참조를 제거하고 다시 추가하는 중입니다.CSSharp는 영향을 받는 파일이 편집될 때까지 일시적으로 문제를 해결했습니다.Visual Studio를 닫고 프로젝트를 다시 열면 더 장기적으로 문제가 해결되므로 Microsoft에서 이러한 상황이 발생할 경우 이 옵션을 사용할 수 있습니다.CSSharp가 이미 참조되었습니다.

첫 단계로 IDE를 다시 시작하는 것이 사소한 것처럼 보일 수도 있지만, 저와 같은 사람들에게 먼저 해야 할 일이라고 생각하지 않는 사람들에게 상기시켜 드립니다.

이것들 중 어느 것도 저에게 효과가 없었습니다.

우리 반의 도서관들은 분명히 두 시스템을 모두 참조하고 있었습니다.코어 및 마이크로소프트.CSharp. Web Application은 4.0이었고 지원 문제로 인해 4.5로 업그레이드할 수 없었습니다.

레이저 엔진을 사용하여 레이저 템플릿을 컴파일하는 동안 오류가 발생했지만 웹 애플리케이션이 다시 시작된 후와 같이 간헐적으로 발생했습니다.

해결책은 어셈블리를 수동으로 로드한 후 동일한 작업을 다시 시도하는 것이었습니다.

        bool retry = true;
        while (retry)
        {
            try
            {
                string textTemplate = File.ReadAllText(templatePath);
                Razor.CompileWithAnonymous(textTemplate, templateFileName);
                retry = false;
            }
            catch (TemplateCompilationException ex)
            {
                LogTemplateException(templatePath, ex);
                retry = false;

                if (ex.Errors.Any(e  => e.ErrorNumber == "CS1969"))
                {
                    try
                    {
                        _logger.InfoFormat("Attempting to manually load the Microsoft.CSharp.RuntimeBinder.Binder");
                        Assembly csharp = Assembly.Load("Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
                        Type type = csharp.GetType("Microsoft.CSharp.RuntimeBinder.Binder");
                        retry = true;
                    }
                    catch(Exception exLoad)
                    {
                        _logger.Error("Failed to manually load runtime binder", exLoad);
                    }
                }

                if (!retry)
                    throw;
            }
        }

이것이 다른 누군가를 도울 수 있기를 바랍니다.

놓치신다면, 마이크로소프트.CSSharp.dll 이 오류가 발생할 수 있습니다.프로젝트 참조를 확인합니다.

언급URL : https://stackoverflow.com/questions/11725514/one-or-more-types-required-to-compile-a-dynamic-expression-cannot-be-found-are