[Mono-dev] __MonoCS__ no longer defined?

Marek Safar marek.safar at gmail.com
Wed Jan 4 22:17:03 UTC 2017


This is not breaking change. __MonoCS__ is/was intended to be used for Mono
C# compiler
workarounds only [0]. It was never intended to be used for platform
detection and we advertised it that way.

Your code would break same way if someone compiled it on Windows and copied
it over to
non-Windows platform which itself is quite common thing.

Marek

[0]
http://www.mono-project.com/docs/faq/technical/#how-can-i-detect-if-my-code-is-compiled-by-the-mono-mcs-compiler

On Wed, Jan 4, 2017 at 10:30 PM, Greg Young <gregoryyoung1 at gmail.com> wrote:

> This is a rather large breaking change no?
>
> On Wed, Jan 4, 2017 at 11:25 PM, Jon Purdy <jopur at microsoft.com> wrote:
> > __MonoCS__ is defined by mcs. Master is now using csc (Roslyn) on most
> > systems. You can configure with --with-csc=mcs to keep using mcs, or
> maybe
> > define __MonoCS__ yourself (not sure if this would break anything).
> >
> >
> > On 1/4/17, 1:17 PM, "Mono-devel-list on behalf of Greg Young"
> > <mono-devel-list-bounces at lists.dot.net on behalf of
> > gregoryyoung1 at gmail.com> wrote:
> >
> >>I just pulled master today and am suddenly getting loads of errors in
> >>our unit test suite how kernel32 is not defined. EG Exception below.
> >>However all places where this is used are wrapped with
> >>
> >>I was building on master recently without any issues. It appears
> >>__MonoCS__ is not defined?!
> >>
> >>        public static uint GetDriveSectorSize(string path)
> >>        {
> >>#if !__MonoCS__ && !USE_UNIX_IO
> >>            //snip
> >>            WinNative.GetDiskFreeSpace(Path.GetPathRoot(path), out
> >>dontcare, out size, out dontcare, out dontcare);
> >>#else
> >>            //snip
> >>#endif
> >>        }
> >>
> >>We are seeing this everywhere we have __MonoCS__
> >>
> >>
> >>So I decided to write a test:
> >>
> >>?  ConsoleApplication cat ConsoleApplication/Program.cs
> >>using System;
> >>using System.Collections.Generic;
> >>
> >>namespace ConsoleApplication
> >>{
> >>    internal class Program
> >>    {
> >>        public static void Main(string[] args)
> >>        {
> >>#if __MonoCS__
> >>    Console.WriteLine("shitbird");
> >>#else
> >>    Console.WriteLine("wtf?");
> >>#endif
> >>        }
> >>    }
> >>}%
> >>
> >>
> >>?  ConsoleApplication xbuild --version
> >>XBuild Engine Version 14.0
> >>Mono, Version 4.9.0.0
> >>Copyright (C) 2005-2013 Various Mono authors
> >>MSBUILD: error MSBUILD0000: Project file '--version' not found.
> >>?  ConsoleApplication xbuild ConsoleApplication.sln
> >>XBuild Engine Version 14.0
> >>Mono, Version 4.9.0.0
> >>Copyright (C) 2005-2013 Various Mono authors
> >>
> >>Build started 1/4/2017 9:16:26 PM.
> >>__________________________________________________
> >>Project
> >>"/home/greg/src/shitbird/ConsoleApplication/ConsoleApplication.sln"
> >>(default target(s)):
> >>Target ValidateSolutionConfiguration:
> >>Building solution configuration "Debug|Any CPU".
> >>Target Build:
> >>Project
> >>"/home/greg/src/shitbird/ConsoleApplication/
> ConsoleApplication/ConsoleAppl
> >>ication.csproj"
> >>(default target(s)):
> >>Target PrepareForBuild:
> >>Configuration: Debug Platform: AnyCPU
> >>Target GenerateSatelliteAssemblies:
> >>No input files were specified for target GenerateSatelliteAssemblies,
> >>skipping.
> >>Target CoreCompile:
> >>Tool /opt/mono/lib/mono/4.5/csc.exe execution started with arguments:
> >>/noconfig /debug:portable /debug:portable /optimize-
> >>/out:obj/Debug/ConsoleApplication.exe Program.cs
> >>Properties/AssemblyInfo.cs
> >>obj/Debug/.NETFramework,Version=v4.5.AssemblyAttribute.cs /target:exe
> >>/define:"DEBUG;TRACE" /nostdlib /platform:AnyCPU
> >>/reference:/opt/mono/lib/mono/4.5-api/System.dll
> >>/reference:/opt/mono/lib/mono/4.5-api/System.Xml.Linq.dll
> >>/reference:/opt/mono/lib/mono/4.5-api/System.Data.DataSetExtensions.dll
> >>/reference:/opt/mono/lib/mono/4.5-api/System.Data.dll
> >>/reference:/opt/mono/lib/mono/4.5-api/System.Xml.dll
> >>/reference:/opt/mono/lib/mono/4.5-api/System.Core.dll
> >>/reference:/opt/mono/lib/mono/4.5-api//mscorlib.dll /warn:4
> >>Microsoft (R) Visual C# Compiler version 2.0.0.61205
> >>Copyright (C) Microsoft Corporation. All rights reserved.
> >>Target DeployOutputFiles:
> >>Copying file from
> >>'/home/greg/src/shitbird/ConsoleApplication/
> ConsoleApplication/obj/Debug/C
> >>onsoleApplication.pdb'
> >>to
> >>'/home/greg/src/shitbird/ConsoleApplication/
> ConsoleApplication/bin/Debug/C
> >>onsoleApplication.pdb'
> >>Copying file from
> >>'/home/greg/src/shitbird/ConsoleApplication/
> ConsoleApplication/obj/Debug/C
> >>onsoleApplication.exe'
> >>to
> >>'/home/greg/src/shitbird/ConsoleApplication/
> ConsoleApplication/bin/Debug/C
> >>onsoleApplication.exe'
> >>Done building project
> >>"/home/greg/src/shitbird/ConsoleApplication/
> ConsoleApplication/ConsoleAppl
> >>ication.csproj".
> >>Done building project
> >>"/home/greg/src/shitbird/ConsoleApplication/ConsoleApplication.sln".
> >>
> >>Build succeeded.
> >>0 Warning(s)
> >>0 Error(s)
> >>
> >>Time Elapsed 00:00:01.9957420
> >>?  ConsoleApplication mono
> >>./ConsoleApplication/bin/Debug/ConsoleApplication.exe
> >>wtf?
> >>
> >>And it appears __MonoCS__ is no longer defined
> >>
> >>
> >>System.DllNotFoundException: KERNEL32
> >>  at (wrapper managed-to-native)
> >>EventStore.Core.TransactionLog.Unbuffered.WinNative:GetDiskFreeSpace
> >>(string,uint&,uint&,uint&,uint&)
> >>  at
> >>EventStore.Core.TransactionLog.Unbuffered.NativeFile.GetDriveSectorSize
> >>(System.String path) [0x00006] in <d6d24c88c72345b79de5eca974e19875>:0
> >>  at EventStore.Core.TransactionLog.Unbuffered.
> UnbufferedFileStream.Create
> >>(System.String path, System.IO.FileMode mode, System.IO.FileAccess
> >>acc, System.IO.FileShare share, System.Boolean sequential,
> >>System.Int32 internalWriteBufferSize, System.Int32
> >>internalReadBufferSize, System.Boolean writeThrough, System.UInt32
> >>minBlockSize) [0x00000] in <d6d24c88c72345b79de5eca974e19875>:0
> >>  at EventStore.Core.Index.PTable.CacheMidpointsAndVerifyHash
> >>(System.Int32 depth) [0x0002e] in <d6d24c88c72345b79de5eca974e19875>:0
> >>  at EventStore.Core.Index.PTable..ctor (System.String filename,
> >>System.Guid id, System.Int32 initialReaders, System.Int32 maxReaders,
> >>System.Int32 depth) [0x002a5] in <d6d24c88c72345b79de5eca974e19875>:0
> >>  at EventStore.Core.Index.PTable.FromMemtable
> >>(EventStore.Core.Index.IMemTable table, System.String filename,
> >>System.Int32 cacheDepth) [0x0018d] in
> >><d6d24c88c72345b79de5eca974e19875>:0
> >>  at EventStore.Core.Index.TableIndex.ReadOffQueue () [0x000b3] in
> >><d6d24c88c72345b79de5eca974e19875>:0
> >>
> >>
> >>
> >>--
> >>Studying for the Turing test
> >>_______________________________________________
> >>Mono-devel-list mailing list
> >>Mono-devel-list at lists.dot.net
> >>https://na01.safelinks.protection.outlook.com/?url=
> http%3A%2F%2Flists.dot.
> >>net%2Fmailman%2Flistinfo%2Fmono-devel-list&data=02%
> 7C01%7Cjopur%40microsof
> >>t.com%7Cc47bb70efa0e47145d8a08d434e729a5%7C72f988bf86f141af91ab2d7cd011
> db4
> >>7%7C1%7C0%7C636191614832257156&sdata=UqAocpYwtgbnVJc%
> 2FsmvGH7XPnO42jk5Ivf9
> >>AEd8sojQ%3D&reserved=0
> >
>
>
>
> --
> Studying for the Turing test
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.dot.net
> http://lists.dot.net/mailman/listinfo/mono-devel-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dot.net/pipermail/mono-devel-list/attachments/20170104/09eee62f/attachment-0001.html>


More information about the Mono-devel-list mailing list