C#Roslyn是否在Android上工作(与Xamarin一起)?
我最近使用Roslyn在游戏应用程序的运行时编译和执行代码。多亏了一些有用的资源,比如和,我成功地在windows10上的C#Console Net核心项目上编写了一个程序,该项目执行位于应用程序根目录下的txt文件中的代码C#Roslyn是否在Android上工作(与Xamarin一起)?,c#,android,compilation,cross-platform,roslyn,C#,Android,Compilation,Cross Platform,Roslyn,我最近使用Roslyn在游戏应用程序的运行时编译和执行代码。多亏了一些有用的资源,比如和,我成功地在windows10上的C#Console Net核心项目上编写了一个程序,该项目执行位于应用程序根目录下的txt文件中的代码 using System; namespace Test15 { public class Program { public static int Main() { System.Console.Wr
using System;
namespace Test15
{
public class Program
{
public static int Main()
{
System.Console.WriteLine("Hello World from external Dll !");
System.Console.WriteLine("And it work !");
return 10;
}
}
}
我不打算分享代码,因为它与Windows 10上的C#Console Net核心项目非常相似,而且这个程序在该项目中运行良好
所以下一步,我尝试让这个程序在一个使用Xamarin的Android项目上和C#一起工作
第一个问题:当尝试添加对Roslyn似乎必要的nugget软件包“Microsoft.CodeAnalysis”时,我出现以下2个错误:
Unable to resolve reference 'Humanizer', referenced by `Microsoft.CodeAnalysis.CSharp.Workspaces`.
Add NuGet package or assembly reference for 'Humanizer', or remove the reference to
'Microsoft.CodeAnalysis.CSharp.Workspaces'. Game2
Unable to resolve reference 'SQLitePCLRaw.core', referenced by `Microsoft.CodeAnalysis.Workspaces`.
Add NuGet package or assembly reference for 'SQLitePCLRaw.core', or remove the reference to
'Microsoft.CodeAnalysis.Workspaces'. Game2
(翻译自法语)
将“Microsoft.CodeAnalysis”nugget包替换为“Microsoft.CodeAnalysis.CSharp”时,两个错误都会消失
但是,在运行时,添加MetadataReference不起作用。
例如,在我使用的Console项目中:
MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location)代码>
要将MetadataReference添加到mscorlib.dll,但在Android项目上,它会崩溃,因为typeof(object).GetTypeInfo().Assembly.Location
返回“mscorlib.dll”
,而不是像“C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.9\System.Private.CoreLib.dll”这样的东西,我想是因为我们在安卓系统上。(与其他MetadataReference相同)
因此,当调用方法csharpcomilation.Create()
时,“reference”参数是一个null MetadataReference数组,它会崩溃
基于此,我认为(但我不确定)Roslyn无法在android上工作,因为缺少System.Object的位置
那么,有人能确认(或宣布)是否有办法在Android上与Roslyn合作吗
(如果您知道在任何设备上编译/执行或“解释”C#代码的其他方法,则奖励点)
感谢阅读并保持安全。似乎其他人也有此问题:-可能尝试ping github以寻求解决方案?是的,我将尝试将问题发布到其他地方,以确认这是否正常。奇怪的是,当我使用roslyn的脚本功能(而不是编译功能)时,它也会崩溃(因此没有生成.dll)。无论如何,我仍然在寻找一种跨平台的脚本/编译语言。