标签: mono

C#/ .NET作为新标准游戏开发平台的可行性?

很长一段时间以来,C++一直是主导的游戏开发语言.许多AAA质量的3D引擎可满足任何预算.

我的问题是,随着XNA的兴起,C#和.NET框架已经定位好,可以作为新的标准游戏开发平台接管吗?显然,XNA框架(Windows,Xbox,Zune)固有的跨平台特性有其优点,但这些优势是否足以吸引大型游戏开发工作室转换?

就个人而言,我在使用C#/ XNA进行新项目和通过jMonkeyEngine使用Java之间徘徊不定.我非常希望让我的游戏能够移植到多个平台上,而我所知道的唯一能够完成此任务的语言是C#和Java.我很想看到由OpenGL驱动的XNA代码库的实现,并且可以在Mono上运行,但我认为这只是一厢情愿的想法.

我很想知道其他人在用C++以外的东西构建3D游戏时所经历的事情.

c# mono xna

23
推荐指数
8
解决办法
4853
查看次数

单声道表现

与GNU/Linux中的Java相比,Mono是否有任何性能基准测试?

你有没有测试过Mono的性能?

mono performance runtime

23
推荐指数
3
解决办法
2万
查看次数

无法从代码隐藏中调用App_Code类

我在"App_Code"文件夹中的文件中有一个类.我可以在"aspx"文件中使用它,但不能从代码隐藏文件中使用它.如何让代码隐藏可见?

注意:这是Mono上的ASP.Net,我直接编写类,而不是使用IDE来编译它们

我的文件:

ASPX文件(testappcode.aspx)

<%@ 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)

CODE BEHIND(TestAppCode.aspx.cs)

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)

asp.net mono app-code code-behind

23
推荐指数
1
解决办法
3万
查看次数

WinForms vs GtkSharp与Mono

在使用Mono开发应用程序以在Windows和Mac OSX(以及可能是Linux)上运行时,您会建议使用WinForms或GtkSharp用于GUI以及为什么

非常感谢具体的例子和成功/恐怖故事.

mono gtk# winforms

22
推荐指数
1
解决办法
8195
查看次数

将.NET App转换为x86本机代码

有一个完全用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函数.

.net c# clr mono native

22
推荐指数
3
解决办法
2万
查看次数

条件表达式的类型不能确定为

当我在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))

非常感谢帮助!

c# mono monodevelop

22
推荐指数
2
解决办法
1万
查看次数

Https POST/GET无法使用Mono

我想使用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 = Cyber​​Trust,CN = Baltimore Cyber​​Trust 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 …

c# mono ssl restsharp raspberry-pi

22
推荐指数
1
解决办法
1230
查看次数

错误CS1703:已导入具有等效标识的多个程序集 - Xamarin + VSTS

我升级到最新的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.

不知道如何解决这个问题?

c# mono xamarin.android xamarin azure-pipelines

22
推荐指数
2
解决办法
3万
查看次数

适用于iOS的.NET单元测试运行器

有没有人写过(或知道)一个.net单元测试运行器,偏爱NUnit, iOS 上运行?还是我必须自己动手?

我的目标是在模拟器或设备上执行单元测试.到目前为止,我已经看到很多关于嘲笑monotouch.dll的帖子/博客(但是在PC上运行测试)和一个回答说明缺少这样的工具.

mono nunit unit-testing xamarin.ios ios

21
推荐指数
1
解决办法
2246
查看次数

C#找不到类型或命名空间名称"List".但我正在导入System.Collections.Generic;

我有一个错误

找不到类型或命名空间名称"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)

如果重要我会使用单声道.

c# mono list monodevelop

21
推荐指数
1
解决办法
4万
查看次数