Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 3803|Resposta: 7

[Gorjetas] Use o Roslyn para compilar código C# dinamicamente e executá-lo

[Copiar link]
Publicado em 06/07/2024 16:59:03 | | | |
Requisitos: O projeto precisa gerar algoritmos e lógicas diferentes de acordo com as necessidades do cliente; neste momento, o código pode não estar escrito como morto, e pode ser necessário algum mecanismo de regras para executar a lógica personalizada.

A Plataforma de Compiladores .NET, codinome Roslyn, é o conjunto de APIs de compiladores e análise de código de código aberto da Microsoft para as linguagens C# e Visual Basic (VB.NET).

Revisar:

A diferença entre o compilador Roslyn MSBuild
https://www.itsvse.com/thread-9596-1-1.html

.NET/C# Plataforma compiladora Roslyn
https://www.itsvse.com/thread-10740-1-1.html
Primeiro, crie um novo aplicativo de console com a seguinte referência:

O código é o seguinte:



Compilamos o código C# para produzir um tamanho de arquivo test.exe apenas3KB。 O arquivo resultante test.exe não pode ser executado como um executável do Windows, e o erro é reportado da seguinte forma:

Exceção não tratada: System.IO.FileNotFoundException: Falhou ao carregar um arquivo ou assembly "System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e" ou uma de suas dependências. O sistema não consegue encontrar o arquivo especificado.
Então, execute o aplicativo de console com os seguintes comandos:

Após a execução, o erro é reportado da seguinte forma:

Um erro fatal foi encontrado. A 'hostpolicy.dll' da biblioteca necessária para executar a aplicação não foi encontrada em 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\'.
Não funcionou como um aplicativo autônomo.
  - O aplicativo foi executado como um aplicativo autônomo porque 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' não foi encontrado.
  - Se este for um aplicativo dependente do framework, adicione o arquivo 'D:\Project\ConsoleApp1\ConsoleApp1\bin\Debug\net8.0\test.runtimeconfig.json' e especifique o framework apropriado.
De forma geral, você precisa de um arquivo *.runtimeconfig.json, que contenha informações de runtime e a versão do .NET Core usada, referência:O login do hiperlink está visível.

Então, crie um novo arquivo test.runtimeconfig.json com a seguinte configuração:

Execute novamente o comando e veja que ele pode ser executado normalmente, como mostrado na figura a seguir:



Referência:

O login do hiperlink está visível.
O login do hiperlink está visível.
O login do hiperlink está visível.





Anterior:.NET/C# converte PDFs em imagens baseadas em PDFtoImage
Próximo:ERP Kingdee Cloud Starry Sky (1) Compreensão simples
 Senhorio| Publicado em 06/07/2024 16:59:46 |
.NET/C# implementa atualizações quentes de plugins DLL baseadas no AssemblyLoadContext
https://www.itsvse.com/thread-10783-1-1.html
 Senhorio| Publicado em 24/07/2024 17:25:55 |
 Senhorio| Publicado em 03/12/2024 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\ 区别



Assemblies de referência (informações de tipo e metadados, não incluindo implementações específicas!) ):C:\Program Files\dotnet\packs\Microsoft.NET Custo.App.Ref\8.0.11\ref\net8.0
Biblioteca de tempo de execução (implementação específica): C:\Program Files\dotnet\shared\Microsoft.NETCore.App\8.0.11\



 Senhorio| Publicado em 03/12/2024 10:16:03 |
Montagens de referência e documentação




 Senhorio| Publicado em 10/12/2024 17:46:00 |
Ao mesmo tempo, você pode gerar um arquivo de símbolos (.pdb)
 Senhorio| Publicado em 10/12/2024 17:49:22 |
Configurar modo de liberação
 Senhorio| Publicado em 30/06/2025 13:40:49 |
Little slag Postado em 2024-7-24 17:25
https://github.com/roslynpad/roslynpad/releases

LINQPad:https://www.linqpad.net/
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com