很长一段时间以来,C++一直是主导的游戏开发语言.许多AAA质量的3D引擎可满足任何预算.
我的问题是,随着XNA的兴起,C#和.NET框架已经定位好,可以作为新的标准游戏开发平台接管吗?显然,XNA框架(Windows,Xbox,Zune)固有的跨平台特性有其优点,但这些优势是否足以吸引大型游戏开发工作室转换?
就个人而言,我在使用C#/ XNA进行新项目和通过jMonkeyEngine使用Java之间徘徊不定.我非常希望让我的游戏能够移植到多个平台上,而我所知道的唯一能够完成此任务的语言是C#和Java.我很想看到由OpenGL驱动的XNA代码库的实现,并且可以在Mono上运行,但我认为这只是一厢情愿的想法.
我很想知道其他人在用C++以外的东西构建3D游戏时所经历的事情.
与GNU/Linux中的Java相比,Mono是否有任何性能基准测试?
你有没有测试过Mono的性能?
我在"App_Code"文件夹中的文件中有一个类.我可以在"aspx"文件中使用它,但不能从代码隐藏文件中使用它.如何让代码隐藏可见?
注意:这是Mono上的ASP.Net,我直接编写类,而不是使用IDE来编译它们
我的文件:
<%@ Page language="c#" src="TestAppCode.aspx.cs" Inherits="TestAppCode.TestAppCode" AutoEventWireup="true" %>
<html>
<head>
<title>Test App_Code Folder</title>
</head>
<body>
<form id="contactForm" runat="server">
<asp:TextBox id="Name" runat="server" ></asp:TextBox>
<asp:TextBox id="Age" runat="server" ></asp:TextBox>
<asp:Button ID="Submit" runat="server" Text="Submit" onclick="SubmitForm" />
</form>
</body>
<html>
Run Code Online (Sandbox Code Playgroud)
using System;
using System.Web.UI.WebControls;
namespace TestAppCode
{
public class TestAppCode : System.Web.UI.Page
{
protected void SubmitForm(object sender, EventArgs e)
{
//It fails here with the error: CS0246: The type or namespace name
//`MyAppCodeClass' could not be found. Are you missing …Run Code Online (Sandbox Code Playgroud) 在使用Mono开发应用程序以在Windows和Mac OSX(以及可能是Linux)上运行时,您会建议使用WinForms或GtkSharp用于GUI以及为什么?
非常感谢具体的例子和成功/恐怖故事.
有一个完全用C#编写的程序,它以.NET Framework 2.0为目标.有没有办法我可以以某种方式编译(翻译)托管EXE到本机的EXE,因此它可能是.NET不可知的?我知道可能有商业产品用于此目的......但它们有点贵.
问题是我们要在运行没有安装.NET Framework的Windows XP的计算机上部署该程序.还要求程序的大小不得超过500Kb(最大1Mb),因为它是从Web服务器下载的(现在大小为255Kb).这就是为什么我们无法将完整的.NET FX(甚至是简化的)附加到下载程序的文件中.
显然,这是一个可怕的软件工程错误应该早先检测到并避免,所以我们可以使用像C++这样的本机技术.
我们现在已经尝试过Novell的Mono - 一个用于Linux,MAC和Windows的.NET Framework的开源实现.Mono由C#编译器,IDE,运行时(CLR)和类库程序集组成(如System.dll和mscorlib.dll - 非常类似于安装到GAC的.NET的类库程序集).我们尝试做的是找到CLR文件并将它们与我们程序的文件和一些程序集一起发送.这样,可以通过在用户的计算机上运行"mono program.exe"(命令提示符)来调用该程序.除了给最终用户CLR文件(mono.exe和mono.dll)的这种使用带来的不便之外,总共大约2.5 Mb,远远大于所需的500 Kb甚至1 Mb.
所以,我们没有其他选择,只能通过编译器将我们的.NET应用程序转换为本机应用程序,但问题仍然存在 - 我们应该使用什么编译器以及我们在哪里可以找到...
目前我偶然发现了微软研究院的Singularity OS项目.它是一个开源研究操作系统,用托管代码编写(至少部分).Singularity OS包括一个Bartok编译器,操作系统使用该编译器将托管程序转换为本机程序(x86 32位).应该注意的是,Bartok无法将.NET 2.0的所有方面都转换为本机代码,但大部分都是如此.但是我还没有学会如何使用奇点......
如果你能提供一些有关问题的有用提示和建议,你自己使用Singularity OS和Bartok Compiler的经验,或者我忽略的问题的另一种方法以及解决方法,我将非常感谢你.
非常感谢你提前!
最后,使用Mono的Full AOT功能(在Callum Rogers的建议下)我设法生成了缺少CLI头的program.exe.dll.所以它看起来就像一个原生的dll.但是,我无法弄清楚如何将该DLL转换为exe或使其运行.此dll似乎也没有暴露任何感兴趣的函数,如main函数.
当我在MonoDevelop中编译我的C#项目时,我收到以下错误:
Type of conditional expression cannot be determined as 'byte' and 'int' convert implicitly to each other
代码片段:
byte oldType = type;
type = bindings[type];
//Ignores updating blocks that are the same and send block only to the player
if (b == (byte)((painting || action == 1) ? type : 0))
{
if (painting || oldType != type) { SendBlockchange(x, y, z, b); } return;
}
Run Code Online (Sandbox Code Playgroud)
这是错误中突出显示的行:
if (b == (byte)((painting || action == 1) ? type : 0))
非常感谢帮助!
我想使用Mono + Restsharp在Raspberry上执行HttpPost.
我尝试在代码中重现的Httpie调用看起来像这样:
http POST https://XXXXX.azurewebsites.net/api/report key=value
Run Code Online (Sandbox Code Playgroud)
这是C#代码:
RestClient nodeRed = new RestClient("http://XXXXX.azurewebsites.net/");
var request = new RestRequest("api/report", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddBody(new { Timestamp = DateTime.Now, Data = "Test" });
request.Timeout = 5000;
var response = nodeRed.Execute(request);
Run Code Online (Sandbox Code Playgroud)
代码运行正常,它只是无法正常工作.响应不包含任何内容(在httpie/MS .NET Framework上具有"成功"的服务器响应).
我已经在Mono上发现了证书的内容.运行
sudo certmgr -ssl -v -m "https://XXXXX.azurewebsites.net"
Run Code Online (Sandbox Code Playgroud)
告诉我它第一次添加两个证书.再次运行它会再次添加第一个证书(并再次),因为它不起作用.
X.509证书v3发布自:C = IE,O =巴尔的摩,OU = CyberTrust,CN = Baltimore CyberTrust Root颁发给:C = US,S =华盛顿,L = Redmond,O = Microsoft Corporation,OU = Microsoft IT, CN = Microsoft IT SSL SHA2有效期:19/12/2013 20:07:32有效期至:19/12/2017 …
我升级到最新的Xamarin for Visual Studio 2015(社区版),重新编译我的项目,检查了一些小的代码更改,我的VSTS构建服务器失败并显示以下错误消息:
[错误] CSC(0,0):错误CS1703:导入了具有等效标识的多个程序集:'C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\mscorlib.dll'和'C:\ WINDOWS\Microsoft.NET \框架\ v4.0.30319\mscorlib.dll中'.删除其中一个重复的引用.
互联网搜索通常几乎不会返回有关此问题的详细信息,并且在VSTS和Xamarin的上下文中根本没有重要信息.
我认为唯一与该问题相关的代码更改是由Visual Studio在项目文件中完成的:
我只针对Android开发,使用的是Xamarin 4.2并使用JDK 8 u101.
不知道如何解决这个问题?
我有一个错误
找不到类型或命名空间名称"List".您是否缺少using指令或程序集引用?
示例代码:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class city1 : MonoBehaviour
{
public static List<string> items = new List ();
public static List<double> itemsprice = new List();
public static List<double> qu = new List();
}
Run Code Online (Sandbox Code Playgroud)
如果重要我会使用单声道.
mono ×10
c# ×6
monodevelop ×2
.net ×1
app-code ×1
asp.net ×1
clr ×1
code-behind ×1
gtk# ×1
ios ×1
list ×1
native ×1
nunit ×1
performance ×1
raspberry-pi ×1
restsharp ×1
runtime ×1
ssl ×1
unit-testing ×1
winforms ×1
xamarin ×1
xamarin.ios ×1
xna ×1