Tag: compilation

如何调用c#(mono,.net)方法,来自本地c的委托

是否可以从本机c代码(以及如何)调用托管代码(可能在类或库中)编写的c#方法? 谢谢 编辑:使用“c#”我主要是指mono或甚至portable.net,操作系统是Linux

如何在Visual Studio 2015中禁用实时编译

有没有办法在Visual Studio 2015中禁用实时编译? 每当我在我的相关代码中进行具有连锁反应的更改时,它就会停止运转。 错误列表甚至在保存我正在处理的C#文件之前更新,在我输入时填充CS ****编译器错误。

以编程方式在C#中编译打字稿?

我正在尝试在C#中编写一个函数,该函数接收包含typescript代码的字符串并返回包含JavaScript代码的字符串。 这有库函数吗?

是否可以使用.net core Roslyn编译器编译单个C#代码文件?

在旧的.net中,我们曾经能够运行csc编译器来编译单个cs文件或多个文件。 使用.net核心,我们有dotnet build ,坚持拥有一个合适的项目文件。 是否有一个独立的命令行编译器,它可以在没有项目的情况下编译源代码文件(并在同一命令行中列出引用的依赖项)? 在Linux上,当我安装了旧的csc和新的.net核心时,我得到了这些时间: [root@li1742-80 test]# time dotnet build Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. test -> /root/test/bin/Debug/netcoreapp2.0/test.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:03.94 real 0m7.027s user 0m5.714s sys 0m0.838s [root@li1742-80 test]# time csc Program.cs Microsoft (R) Visual C# Compiler […]

在没有AppDomains的情况下运行时重新编译C#

假设我有两个C#应用程序 – game.exe (XNA,需要支持Xbox 360)和editor.exe (在WinForms中托管的XNA) – 它们共享一个engine.dll程序集,完成绝大部分工作。 现在让我们说我想添加某种基于C#的脚本(它不是“脚本”,但我会称之为)。 每个级别都有自己inheritance自基类的类(我们称之为LevelController )。 这些是这些脚本的重要约束: 它们需要是真实的,编译好的C#代码 他们应该需要最少的手动“粘合”工作,如果有的话 它们必须与其他所有内容在同一AppDomain中运行 对于游戏 – 这非常简单:所有脚本类都可以编译成程序集(比如, levels.dll ),并且可以根据需要使用reflection对各个类进行实例化。 编辑要困难得多。 编辑器能够在编辑器窗口中“玩游戏”,然后将所有内容重置回原来的位置(这就是编辑器首先需要了解这些脚本的原因)。 我想要实现的基本上是编辑器中的“重新加载脚本”按钮,它将重新编译并加载与正在编辑的级别相关联的脚本类,并且当用户按下“播放”按钮时,创建最近的实例编译脚本。 其结果将是编辑器中的快速编辑测试工作流程(而不是替代方案 – 保存级别,关闭编辑器,重新编译解决方案,启动编辑器,加载级别,测试)。 现在我想我已经找到了实现这一目标的潜在方法 – 这本身就会产生一些问题(如下所示): 将给定级别(或者,如果需要,整个levels.dll项目)所需的.cs文件集合编译为临时的,唯一命名的程序集。 该程序集将需要引用engine.dll 。 如何在运行时以这种方式调用编译器? 如何让它输出这样的程序集(我可以在内存中执行)吗? 加载新assembly。 我在同一个进程中加载​​具有相同名称的类是否重要? (我的印象是名称是由程序集名称限定的?) 现在,正如我所提到的,我无法使用AppDomains。 但是,另一方面,我不介意泄漏旧版本的脚本类,因此卸载的能力并不重要。 除非是吗? 我假设加载可能几百个组件是可行的。 在播放关卡时,实例是从刚刚加载的特定程序集inheritance自LevelController的类。 这该怎么做? 最后: 这是一种明智的做法吗? 它可以做得更好吗? 更新:这些天我使用一种更简单的方法来解决潜在的问题。