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