Пакет-ссылки на то, что Рослин не работает при звонке из собственного приложенияC#

Место общения программистов C#
Ответить
Anonymous
 Пакет-ссылки на то, что Рослин не работает при звонке из собственного приложения

Сообщение Anonymous »

У меня возникла проблема с динамической генерацией кода C#, когда вызывающий процесс является собственным приложением Win32 C++.
Чтобы сузить проблему, я создал следующие тестовые проекты:
  • Код: Выделить всё

    DynCodeDll
    : сборка .net5 (C#), которая динамически компилирует и выполняет исходный код с помощью компилятора Roslyn.
  • Код: Выделить всё

    CLRLibCaller
    : .Net/CLR dll, действует как мост, позволяющий вызывать DynCodeDll из собственного кода.
  • Код: Выделить всё

    NativeExeCaller
    : приложение Win32, которое вызывает функции из DynCodeDll через CLRLibCaller

Код: Выделить всё

DynCodeDll:
[list]
[*]С помощью диспетчера пакетов Microsoft.CodeAnaанализ.CSharp был добавлен в качестве единственной ссылки.

[*]Использованная версия: 3.11, поскольку согласно https://github.com/dotnet/roslyn/blob/main/docs/wiki/NuGet-packages.md это последняя версия, которая работает для VS2019 и .net5
  public class Class1
{
public Class1()
{
System.Diagnostics.Debug.WriteLine("managed ctor");
}

public void compileAndRunDynCode()
{
System.Diagnostics.Debug.WriteLine(">>> managed compileAndRunDynCode");
DoRoslynDynCodeStuff();
System.Diagnostics.Debug.WriteLine("> managed DoRoslynDynCodeStuff");

// Create a syntax tree for the dynamic code
SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(code);

//Here follows code compiling and run - not relevant to the problem.
System.Diagnostics.Debug.WriteLine(">> CLR-Init");
flowControlMain = gcnew DynCodeDll::Class1();
System::Diagnostics::Debug::WriteLine("> CLR-dyncode");
flowControlMain->compileAndRunDynCode();
System::Diagnostics::Debug::WriteLine("

Подробнее здесь: [url]https://stackoverflow.com/questions/78328771/package-references-to-roslyn-not-working-when-calling-from-native-app[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»