Пакет-ссылки на то, что Рослин не работает при звонке из собственного приложения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]

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