У меня возникла проблема с динамической генерацией кода C#, когда вызывающий процесс является собственным приложением Win32 C++.
Чтобы сузить проблему, я создал следующие тестовые проекты:
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#, когда вызывающий процесс является собственным приложением Win32 C++. Чтобы сузить проблему, я создал следующие тестовые проекты: [list] [*][code]DynCodeDll[/code]: сборка .net5 (C#), которая динамически компилирует и выполняет исходный код с помощью компилятора Roslyn. [*][code]CLRLibCaller[/code]: .Net/CLR dll, действует как мост, позволяющий вызывать DynCodeDll из собственного кода. [*][code]NativeExeCaller[/code]: приложение Win32, которое вызывает функции из DynCodeDll через CLRLibCaller [/list] [code]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"); }
// 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("