이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 3803|회답: 7

[팁] Roslyn을 사용해 C# 코드를 동적으로 컴파일하고 실행하세요

[링크 복사]
게시됨 2024. 7. 6. 오후 4:59:03 | | | |
요구사항: 프로젝트는 고객의 요구에 따라 다양한 알고리즘과 로직을 생성해야 하며, 현재 코드가 완전히 쓰여 있지 않을 수 있으며, 맞춤형 로직을 실행하기 위해 어떤 규칙 엔진이 필요할 수 있습니다.

.NET 컴파일러 플랫폼은 코드명 로슬린(Roslyn)으로, C# 및 Visual Basic(VB.NET) 언어용 마이크로소프트의 오픈 소스 컴파일러 및 코드 분석 API 집합입니다.

복습:

Roslyn MSBuild 컴파일러의 차이점
https://www.itsvse.com/thread-9596-1-1.html

.NET/C# 로슬린 컴파일러 플랫폼
https://www.itsvse.com/thread-10740-1-1.html
먼저, 다음과 같은 참조를 가진 새로운 콘솔 애플리케이션을 만듭니다:

코드는 다음과 같습니다:



우리는 C# 코드를 컴파일하여 test.exe 파일 크기만 만듭니다3KB。 결과된 파일은 test.exe Windows 실행 파일로 실행할 수 없으며, 오류는 다음과 같이 보고됩니다:

처리되지 않은 예외: System.IO.FileNotFoundException: 파일 또는 어셈블리 "System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" 또는 그 의존성 중 하나를 로드하지 못함. 시스템이 지정된 파일을 찾을 수 없습니다.
따라서 다음 명령어로 콘솔 애플리케이션을 실행하세요:

실행 후 오류는 다음과 같이 보고됩니다:

치명적인 오류가 발생했습니다. 애플리케이션을 실행하는 데 필요한 라이브러리 'hostpolicy.dll'은 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\'에서 찾을 수 없었습니다.
독립형 앱으로 실행되지 않았습니다.
  - 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json'이 발견되지 않아 애플리케이션이 독립 앱으로 실행되었습니다.
  - 프레임워크 의존 앱이라면 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' 파일을 추가하고 적절한 프레임워크를 지정하세요.
대략적으로 말하면, 런타임 정보와 사용된 .NET Core 버전을 포함하는 *.runtimeconfig.json 파일이 필요합니다. 참고:하이퍼링크 로그인이 보입니다.

따라서 다음과 같은 구성으로 새 test.runtimeconfig.json 파일을 생성하세요:

명령을 다시 실행해 보면 다음 그림과 같이 정상적으로 실행할 수 있음을 확인하겠습니다:



참조:

하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.





이전의:.NET/C#은 PDF를 PDFtoImage 기반 이미지로 변환합니다
다음:ERP 킹디 클라우드 스타리스 스카이 (1) 간단한 이해
 집주인| 게시됨 2024. 7. 6. 오후 4:59:46 |
.NET/C#은 AssemblyLoadContext 기반의 DLL 플러그인 핫 업데이트를 구현합니다
https://www.itsvse.com/thread-10783-1-1.html
 집주인| 게시됨 2024. 7. 24. 오후 5:25:55 |
 집주인| 게시됨 2024. 12. 3. 오전 10:14:58 |
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.11\ref\net8.0 和 C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\ 区别



참조 어셈블리(타입 정보 및 메타데이터, 특정 구현 제외!) ):C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.11\ref\net8.0
런타임 라이브러리 (특정 구현): C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\



 집주인| 게시됨 2024. 12. 3. 오전 10:16:03 |
참고 집합 및 문서




 집주인| 게시됨 2024. 12. 10. 오후 5:46:00 |
동시에 심볼 파일(.pdb)도 생성할 수 있습니다
 집주인| 게시됨 2024. 12. 10. 오후 5:49:22 |
릴리스 모드 구성
 집주인| 게시됨 2025. 6. 30. 오후 1:40:49 |
작은 슬래그, 2024-7-24 17:25에 게시됨
https://github.com/roslynpad/roslynpad/releases

LINQPad:https://www.linqpad.net/
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com