Mono for Linux和OS X上的C#开发有多稳固?我一直在考虑学习C#,并且想知道使用Mono学习是否足够.
我想在我的HTC Magic上运行C#程序,我可以在Android市场上找到单声道应用程序,但我不知道如何运行C#.
代码只是为了好玩,我不想要官方支持等.在Windows Mobile上编写Visual Basic代码之后,我真的想在Android上编写C#代码,无论是直接使用某种编辑器(如果存在),还是在PC上编译然后在Android上安装它.
如果有人知道这样做的方法,请告诉我.
谢谢
以前,我只使用以微软为中心的解决方案,但对于即将推出的ASP.Net项目,我正在考虑使用Mono并将其托管在Linux Amazon EC2实例上.基于对我之前问题的回答,这听起来可行.但是,我对VB.Net最为满意,我想知道Mono对它的支持程度.
有没有人有使用VB.Net为Mono编写ASP.Net应用程序的第一手经验?如果是这样,我想知道它是怎么回事,你遇到了什么样的兼容性问题,以及你是否认为Mono的VB.Net支持可以在生产网站上使用?
我知道Mono的C#.Net支持非常好,所以这是我的后备计划,但我更喜欢使用VB.Net.
我希望得到我的应用程序的目录它似乎不同于常规的c#?
因为Path.GetDirectoryName(Application.ExecutablePath)不工作.
在.net中我怎么知道我的代码是否在Mono上运行?
我有一些C#代码在mono和Microsoft的.net编译器下编译得很好,但只能在单声道上运行.错误消息是(我添加的换行符)
Unhandled Exception: System.TypeLoadException:
Could not load type 'Hasse.Groups.Heavy.Product.PowerGroup`1'
from assembly 'Hasse, Version=1.0.x.y, Culture=neutral, PublicKeyToken=null'
because it has recursive generic definition.
Run Code Online (Sandbox Code Playgroud)
该类型实际上有一个递归的泛型定义,所以我的问题是:为什么它与单声道一起工作?[代码运行并产生预期结果]
完整的源代码在这里:https://github.com/miniBill/Hasse
减少仍然崩溃的代码在这里:
public class Group<T> : IWrappableGroup<WrapperGroup<T>> {}
public class WrapperElement<T> {}
public interface IWrappableGroup<U> {}
public class WrapperGroup<T> : Group<WrapperElement<T>> {}
class MainClass {
public static void Main(string[] args){
var ng = new Group<object>();
}
}
Run Code Online (Sandbox Code Playgroud)
以下证明它适用于单声道:http://ideone.com/ZvA3I
使用Mono 2.11.3(SGen)以及稳定的2.10.8版本,使用WeakReference的测试代码失败了.在像这样的简单代码中
object obj = new object();
WeakReference wr = new WeakReference(obj);
Assert.IsTrue(wr.IsAlive);
obj = null;
GC.Collect();
Assert.IsFalse(wr.IsAlive);
Run Code Online (Sandbox Code Playgroud)
第二个断言将失败.添加GC.WaitForPendingFinalizers没有帮助.这是Mono或我头脑中的错误吗?谢谢
具有LLVM项目的Mono能够使用LLVM编译器后端,后端具有一些非常强大的优化功能,可以编译C#.NET项目,使其在计算密集型应用程序中运行速度提高约20%.
除了Mono的内置JIT编译器之外,Mono现在能够使用LLVM作为代码生成的后端.这使Mono可以从LLVM中完成的所有编译器优化中受益.例如,SciMark得分从482到610.
那么是否可以将现有的C#.NET项目作为目标使用Mono/LLVM以获得更快的Windows或Unix应用程序?它是那么容易还是你必须重构/修改应用程序代码?这甚至可以在常规.NET Framework下运行,还是专门用于Mono Framework项目?考虑到这一点:
这种额外的性能需要付出代价:使用LLVM进行JIT编译会消耗更多时间和更多内存.
我正在尝试使用Mono和XSP4在我的Linux机器上启动MVC5网站.它适用于没有视图但是当我尝试渲染某些东西时它会给我带来错误.
这是我的测试代码.请注意,我没有更改任何内容,这基本上是没有EF或任何其他库的空白站点.只是裸骨MVC5 +剃刀.
public ActionResult Index()
{
// return Content("'sall good"); // works
return View();
}
Run Code Online (Sandbox Code Playgroud)
System.InvalidOperationException
找不到Razor Host Factory类型:System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,Version = 5.0.0.0,Culture = neutral,PublicKeyToken = 31BF3856AD364E35
描述:HTTP 500.Error处理请求.
详细信息:非Web异常.异常来源(应用程序或对象的名称):System.Web.WebPages.Razor.
堆栈跟踪
at System.Web.WebPages.Razor.WebRazorHostFactory.CreateFactory (System.String typeName) [0x00000] in <filename unknown>:0
at System.Collections.Concurrent.ConcurrentDictionary`2+<GetOrAdd>c__AnonStorey3[System.String,System.Func`1[System.Web.WebPages.Razor.WebRazorHostFactory]].<>m__0 () [0x00000] in <filename unknown>:0
at (wrapper delegate-invoke) System.Func`1<System.Collections.Generic.KeyValuePair`2<string, System.Func`1<System.Web.WebPages.Razor.WebRazorHostFactory>>>:invoke_TResult__this__ ()
...
Run Code Online (Sandbox Code Playgroud)
我试图将Version = 5.0.0.0更改为4.0.0.0和3.0.0.0等但没有任何作用.我现在仍然得到同样的错误,大约是4.0.0.0.
有什么希望吗?
我正在尝试将单元测试添加到.Net ImageProcessor库中:https://github.com/cosmo0/ImageProcessor/tree/tests
我正在Mac上使用Xamarin/Mono.Mono似乎对GIF动画图像有一些问题.
对于我的单元测试,我有一堆测试图像,我加载它们并在每个上运行转换.每次我应用过滤器(例如亮度)时,尝试重新创建图像时都会失败.
失败的行在这里:https://github.com/cosmo0/ImageProcessor/blob/tests/src/ImageProcessor/Imaging/Formats/GifFormat.cs#L95
这只是一个Image.FromStream(stream);.我猜测流是错的; 我试图将其保存到文件中,实际上图像查看器无法读取该文件.奇怪的是,在Windows上,似乎完全没有通过测试:https://ci.appveyor.com/project/cosmo0/imageprocessor
知道我可以做什么检查流或修复它?
谢谢 !