.net Core amd Roslyn CSharpCompilation,类型“Object”在未引用的程序集中定义

2024-03-31

我正在尝试将一些 .net 代码移植到新的 Core 运行时,但在移植一些即时编译时遇到了麻烦。

要恢复,它总是要求我引用 System.Runtime 和 mscorlib,但不知道如何引用它们。

附带说明一下,我无法引用 Framework 4.6,因为该项目必须发布到具有 .net Core 的 Linux 计算机。

这是最小的代码:

        string testClass = @"using System; 
        namespace test{

         public class tes
         {

           public string unescape(string Text)
          { 
            return Uri.UnescapeDataString(Text);
          } 

         }

        }";

        var compilation = CSharpCompilation.Create(Guid.NewGuid().ToString() + ".dll")
            .WithOptions(new CSharpCompilationOptions(Microsoft.CodeAnalysis.OutputKind.DynamicallyLinkedLibrary))
            .AddReferences(
            MetadataReference.CreateFromFile(typeof(Object).GetTypeInfo().Assembly.Location),
            MetadataReference.CreateFromFile(typeof(Uri).GetTypeInfo().Assembly.Location)
            )
            .AddSyntaxTrees(CSharpSyntaxTree.ParseText(testClass));

        var eResult = compilation.Emit("test.dll");

它总是抱怨需要 mscorlib (在本例中)和 System.Runtime (在我的实际项目中)。

我正在使用 Microsoft.CodeAnalysis.CSharp 包版本 2.0.0-beta3

关于如何使用 Roslyn 和 .net Core 进行动态编译有什么想法吗?


好的,终于可以工作了:

    string testClass = @"using System; 
    namespace test{

     public class tes
     {

       public string unescape(string Text)
      { 
        return Uri.UnescapeDataString(Text);
      } 

     }

    }";

    var dd = typeof(Enumerable).GetTypeInfo().Assembly.Location;
    var coreDir = Directory.GetParent(dd);

    var compilation = CSharpCompilation.Create(Guid.NewGuid().ToString() + ".dll")
        .WithOptions(new CSharpCompilationOptions(Microsoft.CodeAnalysis.OutputKind.DynamicallyLinkedLibrary))
        .AddReferences(
        MetadataReference.CreateFromFile(typeof(Object).GetTypeInfo().Assembly.Location),
        MetadataReference.CreateFromFile(typeof(Uri).GetTypeInfo().Assembly.Location),
        MetadataReference.CreateFromFile(coreDir.FullName + Path.DirectorySeparatorChar + "mscorlib.dll"),
        MetadataReference.CreateFromFile(coreDir.FullName + Path.DirectorySeparatorChar + "System.Runtime.dll")
        )
        .AddSyntaxTrees(CSharpSyntaxTree.ParseText(testClass));

    var eResult = compilation.Emit("test.dll");

我不喜欢它,因为硬编码,但似乎这是让它工作的唯一方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.net Core amd Roslyn CSharpCompilation,类型“Object”在未引用的程序集中定义 的相关文章

  • 为什么在 C++ 中声明枚举时使用 typedef?

    我已经很多年没有写过任何 C 了 现在我正试图重新开始 然后我遇到了这个并考虑放弃 typedef enum TokenType blah1 0x00000000 blah2 0X01000000 blah3 0X02000000 Toke
  • 如何查明 .exe 是否正在 C++ 中运行?

    给定进程名称 例如 程序 exe C 标准库没有这样的支持 您需要一个操作系统 API 来执行此操作 如果这是 Windows 那么您将使用 CreateToolhelp32Snapshot 然后使用 Process32First 和 Pr
  • 从时间列表中查找最接近的时间

    所以 这是场景 我有一个带有创建时间的文件 我想从该文件的创建时间最接近或相等的时间列表中选择一个时间 完成此操作的最佳方法是什么 var closestTime listOfTimes OrderBy t gt Math Abs t fi
  • 如何调试在发布版本中优化的变量

    我用的是VS2010 我的调试版本工作正常 但我的发布版本不断崩溃 因此 在发布版本模式下 我右键单击该项目 选择 调试 然后选择 启动新实例 此时我看到我声明的一个数组 int ma 4 1 2 8 4 永远不会被初始化 关于可能发生的事
  • 虚拟并行端口模拟器

    在我的计算机网络课程中 我们应该通过使用本机寄存器 例如使用 outportb 等命令 来学习并行端口编程 我没有并行端口 因为我住在 2011 年 但想练习这些程序 我使用 dosbox 安装了旧的 Turboc 3 IDE 有没有一个程
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • 关闭整数的最右边设置位

    我只需要关闭最右边的设置位即可 我的方法是找到最右边位的位置 然后离开该位 我编写这段代码是为了这样做 int POS int n int p 0 while n if n 2 0 p else break n n 2 return p i
  • 提升mapped_file_source、对齐方式和页面大小

    我正在尝试在性能很重要的上下文中解析一些大小高达几百兆字节的文本文件 因此我使用 boostmapped file source 解析器期望源以空字节终止 因此我想检查文件大小是否是页面大小的精确倍数 如果是 则使用较慢的非内存映射方法 我
  • 我需要安装什么才能获取 Microsoft.TeamFoundation.WorkItemTracking.Client.dll?

    我只需要安装VS2010 SDK http www microsoft com downloads en details aspx FamilyID 47305cf4 2bea 43c0 91cd 1b853602dcc5 是否有 TFS2
  • 如何增加ofstream的缓冲区大小

    我想增加 C 程序的缓冲区大小 以便它不会过于频繁地写入 默认缓冲区是 8192 字节 我尝试使用 pubsetbuf 将其增加到 200K 原始代码 ofstream fq fastq1 cstr ios out fastq1 is a
  • 从点云检测平面集

    我有一组点云 我想测试3D房间中是否有角落 所以我想讨论一下我的方法 以及在速度方面是否有更好的方法 因为我想在手机上测试它 我将尝试使用霍夫变换来检测线 然后我将尝试查看是否有三条线相交 并且它们也形成了两个相交的平面 如果点云数据来自深
  • 如何使用 C# 查询远程 MS ACCESS .mdb 数据库

    我正在尝试使用 C 查询 mote MS ACCESS 数据库 mdb 文件 将文件复制到本地计算机时可以成功查询它 我只想远程放置文件 所以我的客户端程序不包含原始数据 static string m path http www xyz
  • 选择 asp.net CheckBoxList 中的所有项目

    ASP NET 和 C 我想要一个带有 全选 项目的复选框列表 当这个特定项目是 已选择 所有其他都将被选择 也 当选择被删除时 这个项目 也将来自所有人 其他物品 选中 取消选中 任何其他项目只会有一个 对特定项目的影响 无论选择状态如何
  • C++ 模板可以提供 N 个给定类的公共父类吗?

    我正在寻找一个 C 模板 它可以找到一组给定类的共同父级 例如 class Animal class Mammal public Animal class Fish public Animal class Cat public Mammal
  • WPF DataGrid - 在每行末尾添加按钮

    我想在数据网格的每一行的末尾添加一个按钮 我找到了以下 xaml 但它将按钮添加到开头 有人知道如何在所有数据绑定列之后添加它吗 这会将按钮添加到开头而不是末尾
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 在二进制数据文件的标头中放入什么

    我有一个模拟 可以读取我们创建的大型二进制数据文件 10 到 100 GB 出于速度原因 我们使用二进制 这些文件依赖于系统 是从我们运行的每个系统上的文本文件转换而来的 所以我不关心可移植性 当前的文件是 POD 结构的许多实例 使用 f
  • Unity,c++ 本机插件字节数组不匹配

    在我的 C 本机插件中 我有一个调用 vector
  • IDisposable 的显式实现

    虽然有很多关于IDisposable在 SO 上找到 我还没有找到答案 我通常遵循这样的做法 当我的一个班级拥有一个IDisposable对象然后它也实现IDisposable并打电话Dispose在拥有的对象上 然而最近我遇到了一个类 它
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe

随机推荐

  • Vim“较早”和“较晚”命令未按预期工作

    首先查看 Vim 中的时间旅行命令 即ea N s and lat N s 我以为这会很简单 但是 它并没有像预期的那样对我有用 现在我完全困惑了 这就是发生的事情 我启动了 Vim 并开始编写以下几行 say first line wri
  • Visual Studio 2022 中的解决方案资源管理器

    我刚刚安装了 Visual Studio 2022 professional 安装很顺利 没有失败 但是 当我尝试创建任何项目时 我得到这样的解决方案资源管理器 Webapplication1 0项目 并且它没有显示带有控制器和启动文件等的
  • 在 Symfony 2.3 项目上集成 Twitter Bootstrap 3.2

    我尝试将 Twitter Bootstrap 3 2 集成到我的 Symfony 2 3 项目中 刚刚找到 Bootstrap 3 0 的教程与 leafo lessphp 但这不再受支持 此外它不适用于 Bootstrap 3 2 我发现
  • 将 pandas 数据框列映射到字典

    我有一个数据框的案例 其中包含高基数的分类变量 许多唯一值 我想将该变量重新编码为一组值 最常见的值 并用一个包罗万象的类别 其他 替换所有其他值 举一个简单的例子 以下是应保持不变的两个值 top values apple orange
  • 是否可以撤销提交?

    假设我们有一个存储库和 5 个提交 commit 1 commit 2 commit 3 commit 4 commit 5 现在我意识到提交 4 和 5 是一个坏主意 我想完全删除提交 4 和 5 中提交的所有更改 该怎么做 git re
  • 在clojure中,如何将具有相同键的映射组合的多个映射合并到一个列表中?

    在 Clojure 中 我想将多个映射组合成一个映射 其中具有相同键的映射被组合成一个列表 例如 humor happy humor sad humor happy weather sunny 应该导致 weather sunny humo
  • 如何从资源文件夹中获取文件。 Spring框架

    我正在尝试解组我的 xml 文件 public Object convertFromXMLToObject String xmlfile throws IOException FileInputStream is null File fil
  • 分层架构中的实体框架

    最近我读了一篇文章 分层架构中的实体框架 http msdn microsoft com en us magazine cc700340 aspx 并且写道我们可以通过 WCF 将 EF 实体发送到客户端 但是在 Stackoverflow
  • 高效的 4x4 矩阵乘法(C 与汇编)

    我正在寻找一种更快 更棘手的方法来用 C 语言将两个 4x4 矩阵相乘 我目前的研究重点是具有 SIMD 扩展的 x86 64 汇编 到目前为止 我已经创建了一个比简单的 C 实现快大约 6 倍的函数 这超出了我对性能改进的预期 不幸的是
  • CSS flexbox 包装未调整大小以适应内容[重复]

    这个问题在这里已经有答案了 一个简化的 plunkr 来显示问题 https plnkr co edit mHTHLEumQ04tInFVAz3z p preview https plnkr co edit mHTHLEumQ04tInFV
  • GCP Cloud Run:无法创建服务

    我正在尝试将 Cloud run 与私有 GKE 集群结合使用 我使用以下命令创建了集群 gcloud beta container clusters create cluster name create subnetwork name c
  • 标准 ORMLite 方法中的 CursorWindowAllocationException

    我需要在数据库中保存一些对象 我在我的 Dao 类中使用这段代码 public void saveActions List
  • 如何知道缩放级别以在谷歌标记集群内显示标记

    好吧 几乎所有内容都在标题中 我有数千个带有谷歌标记集群的标记 不是谷歌标记集群加上 让我知道它是否有帮助 一切都很完美 BUT 当我触发与特定标记相关的事件时 我想单独显示该标记 不再在群集内 由于标记的空间重新分配并不均匀 在某些地方
  • 如何查看Core Data中存储的数据?

    我正在为我的应用程序创建一个核心数据模型 我希望能够查看它的内部 看看我在那里存储了什么 有没有一个比搜索后备存储更简单的方法 我的应该是 SQLite 并从那里读取它 看起来不太像苹果风格 当您的应用程序在模拟器中运行并创建持久存储文件后
  • PDFBox 是否允许从 AcroForm 中删除一个字段?

    我正在使用阿帕奇PDF盒子2 0 8 https mvnrepository com artifact org apache pdfbox pdfbox 2 0 8并试图删除一个字段 但找不到方法来做到这一点 就像我可以用 iText 做的
  • Excel VBA 条件格式未执行

    这很奇怪 我正在从 MS Access 2003 VBA 创建 Excel 2003 电子表格 编码包括条件格式 如果单元格值大于 a value 则为红色 如果小于 a value 则为绿色 即使在生成电子表格时成功创建了 CF 公式 但
  • 从文件中读取最后一行

    我遇到了一个问题 我在 Linux 机器上有一个日志 其中写入了多个正在运行的进程的输出 这个文件有时会变得非常大 我需要读取该文件的最后一行 问题是此操作将经常通过 AJAX 请求调用 当该日志的文件大小超过 5 6MB 时 这对服务器来
  • PySpark PCA:避免 NotConvergedException

    我试图通过 ml linalg 方法使用 PCA 来减少广泛的数据集 51 个特征 约 1300 个个体 如下所示 1 将我的列命名为一个列表 features indi prep df select c for c in indi pre
  • bootstrap下拉菜单根据屏幕位置自动下拉?

    我想知道你们中是否有人已经准备好我所要求的东西 以帮助我摆脱麻烦 我正在寻找的是一个下拉菜单 可以根据其在屏幕上的位置自动添加下拉类 并且当用户滚动或调整窗口大小时也会自动更改 我正在寻找的内容已经在 bootstrap select 插件
  • .net Core amd Roslyn CSharpCompilation,类型“Object”在未引用的程序集中定义

    我正在尝试将一些 net 代码移植到新的 Core 运行时 但在移植一些即时编译时遇到了麻烦 要恢复 它总是要求我引用 System Runtime 和 mscorlib 但不知道如何引用它们 附带说明一下 我无法引用 Framework