<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><font color="#000000" face="Calibri,sans-serif">EntityFramework was already removed from the upcoming Mono 4.0.</font><BR><font color="#000000" face="Calibri,sans-serif">I also just checked and on Windows I have System.Web.Razor.dll (Razor 2.0) in the GAC as well, so maybe there's some other issue here?</font><BR> <BR>-- Alex<font color="#000000" face="Calibri,sans-serif"><br id="FontBreak"></font><br> <BR><div>> From: matthi.d@googlemail.com<br>> Date: Thu, 16 Apr 2015 12:08:54 +0200<br>> To: mono-devel-list@lists.ximian.com<br>> Subject: [Mono-dev] Assemblies in the CLR system directory and F# scripting.<br>> <br>> Hi all,<br>> <br>> TL;DR: We should remove System.Web.Razor.dll, EntityFramework.dll (and<br>> possibly more) from "/usr/lib/mono/4.5"<br>> <br>> I noticed that some assemblies (namely "EntityFramework" and<br>> "System.Web.Razor" and possibly more) lead to problems when used within<br>> a F# script file. The problem is the following:<br>> <br>> Assume you use NuGet to download the latest Razor-3 package and then do<br>> the following (in an F# script file):<br>> <br>> #I "packages/Microsoft.AspNet.Razor/lib/net45"<br>> #r "System.Web.Razor.dll"<br>> <br>> Note that this is the usual way of loading assemblies in F# scripting<br>> and it works fine on Windows/.NET.<br>> <br>> However because this is the same as using<br>> "/lib:packages/Microsoft.AspNet.Razor/lib/net45<br>> /reference:System.Web.Razor.dll" on the C# compiler and because mono has<br>> a "System.Web.Razor.dll" in its CLR system directory (/usr/lib/mono/4.5)<br>> it will redirect the reference (CLR system directory is always<br>> preferred, see https://msdn.microsoft.com/en-us/library/s5bac5fx.aspx).<br>> <br>> This already hit me several times:<br>>  - https://github.com/fsharp/FSharp.Compiler.Service/issues/313<br>>  - https://github.com/tpetricek/FSharp.Formatting/pull/279<br>> <br>> I'm not really sure why mono actually needs those file to live there.<br>> For referencing the NuGet package should be fine. To load the correct<br>> (mono compatible) version on runtime the GAC should do it.<br>> IMHO we can just remove the System.Web.Razor.dll (and possibly others?)<br>> from the runtime directory.<br>> @akoeplinger noted the following in the gitter chat: It would be a<br>> breaking change for people depending on "/reference:System.Web.Razor" to<br>> just work.<br>> But I'm not sure how common that is with the NuGet package in place.<br>> IIRC xbuild and msbuild always use fully qualified references, so it<br>> shouldn't be a problem for them.<br>> <br>> So... Is removing those file something we can do? I just wanted to bring<br>> attention to this issue as it can be *really* hard to debug. The<br>> workarounds in place for this are required anyway to work with older<br>> mono versions. The workaround in itself is simple you just need to use<br>> the fully qualified reference instead:<br>> <br>> #r "packages/Microsoft.AspNet.Razor/lib/net45/System.Web.Razor.dll"<br>> <br>> However this can be a problem if you don't know in advance in which of<br>> the included directories ("#I") the file is living. (Because F# will<br>> stop executing if the fully qualified reference doesn't exists).<br>> <br>> Thanks,<br>>  Matthias<br>> _______________________________________________<br>> Mono-devel-list mailing list<br>> Mono-devel-list@lists.ximian.com<br>> http://lists.ximian.com/mailman/listinfo/mono-devel-list<br></div>                                         </div></body>
</html>