MonoUE - C# and F# for UE4

Error The “GenerateInputIniHelpers” task failed unexpectedly.
System.IO.FileNotFoundException: Could not load file or assembly ‘System.IO.FileSystem, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified.
File name: ‘System.IO.FileSystem, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’
at MonoUE.Tasks.GenerateInputIniHelpers.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Tried adding an input binding in a new empty project, same thing happened.

@honaj what version of Visual Studio & .NET do you have installed?

VS 2017, .NET 4.7.02046, latest MonoUE build. I tried it on my laptop which is running the same exact config and strangely enough input bindings work fine, must be some other issue with my desktop.

@honaj it looks like Referencing a .net standard class library project in .net Framework web app and System.IO.FileNotFoundException throws · Issue #410 · dotnet/standard · GitHub might be related?

When can we expect hot reload so that i could start developing with this awesomeness.

I can’t import external dll’s . (Trying to import Json.Net)
It saying 'Dll does not support framework ‘MonoUE,Version=v1.0’
Is there any workaround?

Hi, guys,

I’ve been waiting for (better/reliable/official)C# support for UE4 for a long time since Xamarin announced it back in 2014. The news that it’s finally available made me so excited and I’ve been following this thread every day for the update. Unfortunately, this project is not still ready for a production. I’m eagerly waiting for VS support (hot-reloading and debugging) so that at least I can start testing while waiting for other feature. However, the lack of updates makes me worried that it will become a dead project. I would like to make this petition to both Microsoft and Epic Games to support more officially, or at least allocate some more resources.

I think many of us agree that C++ provides you the performant code but coding C++ is clunky and unproductive quite a bit compared to C#. There is Blueprint but it can get quite messy and unmanageable when a project becomes large. I try to avoid Blueprint whenever possible. But we now have C#. I believe C# strikes the right balance between the performance and productivity. It is the perfect option while developing and we can easily port the portion of the code to C++ at the final stage if we want performance.

Having said that, I don’t really understand why Epic games does not make C# support official, likewise, the same for Microsoft where they support Unity officially. I really appreciate that Mikayla pulled this through pretty much single handedly. She is doing wonderful job and she is the reason why we are all here but it will require much more help. This will be a Holi grail for the many and existing Unity/C# developers will find a good reason to move over to UE4. What is my opinion on Unity? Unity without AssetStore is basically the same Unity 10 years ago (Editor-wise). Some basic functionality such as adjusting editor camera speed is still missing (this is just one of the many basic and simple functionalities and I’m not sure why they don’t want to improve the editor). I even heard that it is their philosophy to encourage users to write a plugins to enhance the editor. And doing this themselves will disrupt the ecosystem. Whether true or not, the end result is that the editors has been the same for many years with many basic features are still missing and I don’t think they will change anytime soon. I’m not very happy with Unity and want to solely focus in UE4 for the future project given UE4 gets C# support.
I believe I’m not the only one who feels this way I really hope someone at Epic Game and Microsoft will read this and this project gets more support from them and this project finally become successful.

Cheers!

Really looking forward to the hot reload function,As a beginner from unity to UE4,
I need to be familiar with api, try constantly, but C ++ each time the compiler time is too long affect my learning experience,:frowning:
Until I saw the mono-ue, in the UE4 can use C # language programming is really good.:slight_smile:
Thanks to the mono-ue developers!

Which version of JSON.NET are you referencing - the netstandard one?

Ohh. Thank you. I relized my mistake. I was tried to download from Nuget.

Then tried to add netstandard 1.3 both give me that error but now i tried “netstandard 1.0” now it doesn’t give me error.

I am trying to make simple login system but UnrealEngine crashing with this simple code.

And i can’t see why it crashes. It doesn’t even shows in log.

Inheriting from UserWidget is not posible ?

Would it be fair to say that this only works with the core UE4 functionality, and NOT with plugins purchased from the Marketplace?

Hi, Guys, I still visit once a day to see if there are any changes. It is becoming increasingly unbearable after waiting for C# plugin for a while. Perhaps I would like to direct this question directly to Mikayla since there aren’t any active developers yet. Mikayla, I’m very aware of that this is your pet project but I really would like it to take-off. I’m really certain that it will take-off once it is more useable state. I think dynamic reloading is must have feature in order people to start testing and make it as UE4 plugin necessary to gain more popularity. Could you please help us to get there? And I believe someone who can help you will show up once it becomes more usable and visible. And if there are reason why it’s is difficult to do, could you please share it with us so that we don’t blindly wait for it? I think I must look for some other opportunities if it not likely to happen. Thank you very much as always. Cheers!

In practice, yes. There’s no reason it shouldn’t be compatible eventually but the workflows to build bindings for binary plugins don’t currently exist.

This is what I’m working on! The limiting factor is that it’s a free time project for me, and I’ve been busy with a lot of other things lately, both at work and at home.

One of those things is building a new 16-core PC so that I can compile UE4 faster, though :slight_smile:

Hi, Mikayla, thanks for the update. I really hope that it moves along soon. Yeah I saw your rig. It looks super AWESOME!! You can crank it up to the max horsepower and compiliing c++ code will be more like compiling c# code. But I bet it will still be a lot slower due the linking. I also bought a dual E5 CPU with 28 cores (56 threads) in preparation of the serious work. The compiling goes a lot faster but for any small changes requries linking and it is still painful to wait each time. BTW, will C# hot-reloading support runtime hot-reloading? Runtime hot-reloadin is advertised on old Xamarin UE4 page and I suppose it’s still possible (except in some situations that requres re-serialization). UE4 c++ supports hot-reload but it requires a game restart. C# runtime hot-reloading is really what I’m looking for and it will be a huge time saver especially when you are debugging netcode. In developing a network game, it’s really painful to launch the server and a couple of clients to just test simple stuff. Anyway, thanks again and I’m really looking forward some great news. Cheers!

Hi Mikayla,

I cloned the MonoUE fork to my (Win 8.1) desktop and and followed the steps identified in the ReadMe. Up to this point, everything goes well, but when I build the solution in Visual Studio 2017, I get the following (numerous) errors. I deleted the repo twice and started over, but building the solution in VS always results in the following 47 errors and 6 warnings. I’ve asked Google, but no one else seems to have this specific problem. If you could point out an area where I must be doing something wrong, I can take it from there. For now, though, I’m stumped.


Severity    Code    Description    Project    File    Line    Suppression State
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    Localization.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Localization\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    OneSkyLocalization.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\OneSkyLocalization\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\Localization.Automation.dll' could not be found    OneSkyLocalization.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\OneSkyLocalization\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    AutomationScripts.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Scripts\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\OneSkyLocalization.Automation.dll' could not be found    AutomationScripts.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Scripts\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    BuildGraph.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\BuildGraph\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    IOS.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\IOS\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    AllDesktop.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\AllDesktop\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\AutomationScripts.Automation.dll' could not be found    Android.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Android\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    Android.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Android\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\AutomationScripts.Automation.dll' could not be found    HTML5.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\HTML5\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    HTML5.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\HTML5\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    Linux.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Linux\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    Mac.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Mac\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    TVOS.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\TVOS\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\IOS\IOS.Automation.dll' could not be found    TVOS.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\TVOS\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    Win.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Win\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\BuildGraph.Automation.dll' could not be found    Win.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\Win\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    XLocLocalization.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\XLocLocalization\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\Localization.Automation.dll' could not be found    XLocLocalization.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\XLocLocalization\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\AllDesktop\AllDesktop.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\Android\Android.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\AutomationScripts.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationUtils.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\BuildGraph.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\HTML5\HTML5.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\IOS\IOS.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\Linux\Linux.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\Localization.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\Mac\Mac.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Binaries\DotNet\AutomationScripts\MonoUE.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\OneSkyLocalization.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\TVOS\TVOS.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\Win.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0006    Metadata file 'D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\DotNET\AutomationScripts\XLocLocalization.Automation.dll' could not be found    AutomationTool    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\CSC    1    Active
Error    CS0122    'UnrealBuildTool' is inaccessible due to its protection level    AutomationUtils.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\AutomationUtils\ScriptCompiler.cs    152    Active
Error    CS7036    There is no argument given that corresponds to the required formal parameter 'Location' of 'DirectoryReference.Exists(DirectoryReference)'    AutomationUtils.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Source\Programs\AutomationTool\AutomationUtils\ScriptCompiler.cs    157    Active
Error        The command "..\..\MSBuild\NuGet.exe restore -PackagesDirectory D:\GitHub\MonoUE\UnrealEngine\Engine\Plugins\MonoUE\Build\MonoAutomation\packages nuget\packages.config" exited with code 9009.    MonoUE.Automation    D:\GitHub\MonoUE\UnrealEngine\Engine\Plugins\MonoUE\Build\MonoAutomation\MonoUE.Automation.csproj    83    
Warning        Could not resolve this reference. Could not locate the assembly "Localization.Automation". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.    AutomationScripts.Automation            
Warning        The referenced component 'Localization.Automation' could not be found.    AutomationScripts.Automation            
Warning        The referenced component 'Mono.Cecil.Rocks' could not be found.    MonoUE.Automation            
Warning        The referenced component 'Mono.Cecil.Mdb' could not be found.    MonoUE.Automation            
Warning        The referenced component 'Mono.Cecil.Pdb' could not be found.    MonoUE.Automation            
Warning        The referenced component 'Mono.Cecil' could not be found.    MonoUE.Automation            
Error    MSB3075    The command "..\..\Build\BatchFiles\Build.bat UnrealHeaderTool Win64 Development -waitmutex" exited with code 5. Please verify that you have sufficient rights to run this command.    UnrealHeaderTool    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets    44    
Error    MSB3075    The command "..\..\Build\BatchFiles\Build.bat UnrealLightmass Win64 Development -waitmutex" exited with code 5. Please verify that you have sufficient rights to run this command.    UnrealLightmass    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets    44    
Error    MSB3075    The command "..\..\Build\BatchFiles\Build.bat UnrealWatchdog Win64 Development -waitmutex" exited with code 5. Please verify that you have sufficient rights to run this command.    UnrealWatchdog    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets    44    
Error    MSB3075    The command "..\..\Build\BatchFiles\Build.bat UnrealPak Win64 Development -waitmutex" exited with code 5. Please verify that you have sufficient rights to run this command.    UnrealPak    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets    44    
Error    MSB3075    The command "..\..\Build\BatchFiles\Build.bat UnrealVersionSelector Win64 Development -waitmutex" exited with code 5. Please verify that you have sufficient rights to run this command.    UnrealVersionSelector    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets    44    
Error    MSB3075    The command "..\..\Build\BatchFiles\Build.bat UnrealFileServer Win64 Development -waitmutex" exited with code 5. Please verify that you have sufficient rights to run this command.    UnrealFileServer    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets    44    
Error    C2187    syntax error: 'identifier' was unexpected here    BootstrapPackagedGame    C:\Program Files (x86)\Windows Kits\8.1\include\um\combaseapi.h    229    
Error        Failed to produce item: D:\GitHub\MonoUE\UnrealEngine\Engine\Binaries\Win64\BootstrapPackagedGame.exe    BootstrapPackagedGame    D:\GitHub\MonoUE\UnrealEngine\Engine\Intermediate\ProjectFiles\ERROR    1    
Error    MSB3075    The command "..\..\Build\BatchFiles\Build.bat BootstrapPackagedGame Win64 Development -waitmutex" exited with code 5. Please verify that you have sufficient rights to run this command.    BootstrapPackagedGame    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets    44    


Dean

P.S. Thank you isn’t nearly strong enough for you to understand just how much this labour of love of yours is giving to the community. But, thank you is all I have, so THANK YOU!!!

Share what?

Good new folks! I finished building my new PC, and got MonoUE compiling on it. It’s gone from building in 40mins to building in 10mins.

How would you all feel about me temporarily dropping Mac support? It’s a pain to keep the engine working across multiple platforms while I’m making invasive changes to the build system and project system.