QuinnDamerellCreated Wednesday, February 3rd 2016 @ 05:16:17
I have a question about submission of bots, C# in specific. I have a bot that is written as a Visual Studio project, which uses a few projects within to make the bot. From the submit instructions it is not clear how the bot should be submitted, if we have something that complies should it already be complied? If not, how is the system going to understand how to build the solution?
I think the easiest solution would be for languages that compile put a known named .exe in the root of the zip, and for languages that don’t put the source files.
Let me know what the correct answer is!
DeveloperCreated Wednesday, February 3rd 2016 @ 08:57:59
Just upload all the source files in the structure you have them in your project. If you want to see how exactly, download a C# starterbot from one of the competitions.
QuinnDamerellCreated Wednesday, February 3rd 2016 @ 18:08:58
The difference is the starter bot only has one project which is in the root directory. Our bot has a solution file in the root which has many projects in sub folders (using the standard VS layout). Will that still work?
- Created Wednesday, February 3rd 2016 @ 18:26:09
@QuinnDamerell: The final result you have to upload is all files that you want to have compiled. The build is handled as all files in that one directory will lead to the compilation of one dll only (technically an executable).
You can not upload an solution file, or project file (well you can, but those are ignored).
QuinnDamerellCreated Wednesday, February 3rd 2016 @ 20:51:44
Hmmm, that doesn’t seem ideal. The project files (and solution file) holds a lot of the context about the project and how it should be built (things like defines, .NET target versions, resources, project references, etc). C# usually isn’t a language where you can just build files sitting in a flat folder. Is there any way the system can be changed to support this?
If not, what is the build system exactly? It is running on Linux using Mono? Can you tell us what version of .net we should be targeting to work properly with your build system?
DeveloperCreated Thursday, February 4th 2016 @ 08:50:42
We won't be changing that in the near future. But it's run on Linux with the dmcs command, Mono C# compiler version 18.104.22.168
- Created Saturday, February 6th 2016 @ 19:01:32
Did you try to just take all your cs files, dump them into a zip file and upload it (without any extra folders)? What happens if you do that? If you try to use cutting edge C# features, that will probably not be supported.
- Created Sunday, February 7th 2016 @ 00:45:49
Thanks for all of the help. I broke apart my solution and flattened out the files and it is working locally now. However I'm using 22.214.171.124 (http://download.mono-project.com/archive/4.2.2/windows-installer/) which is the oldest 4.2.2.x build on the server and my program builds just fine. However when I submit it I'm getting errors that lead be to believe that the server version of Mono is older, I'm getting this:
src/UploadPackage/ThinkDeep.cs(129,38): error CS0117:
System.Threading.Tasks.Task' does not contain a definition forRun' /usr/lib/mono/4.0/mscorlib.dll (Location of the symbol related to previous error) src/UploadPackage/Program.cs(119,36): error CS1061: Type
System.IO.TextWriter' does not contain a definition forWriteLineAsync' and no extension method
WriteLineAsync' of typeSystem.IO.TextWriter' could be found. Are you missing an assembly reference? /usr/lib/mono/4.0/mscorlib.dll (Location of the symbol related to previous error)
Can you confirm the version of Mono your running? Any chance you can update it to a newer build?
Thanks again. :)