`dotnet build`ing Eto.Forms projects
A couple of months back, Scott Hanselman blogged about the Eto.Forms cross-platform UI toolkit for .net. I filed that away for reference, and this weekend got around to giving it a whirl.
So I took the default new F# app and made a personalized little skeleton project (standard boiler-plate for the "About..." dialog, that sort of thing), and as part of making it re-usable as such, added a trivial FAKE build script. Eto.Forms generates new-style projects, so of course that would be using the DotNet.build
and DotNet.publish
tasks...
Not so fast.
Do that and it barfs with
error : MSB4801: The task factory "CodeTaskFactory" is not supported on the .NET Core version of MSBuild. error MSB4175: The task factory "CodeTaskFactory" could not be loaded from the assembly "C:\Program Files\dotnet\sdk\2.1.200\Microsoft.Build.Tasks.Core.dll". The task factory must return a value for the "TaskType" property.
which turns out to be a known issue (or two). Rather than sit tight and wait, I did a bit of looking around. Turns out there's a similar, closed, issue against msbuild
itself, to which the resolution is to use the RoslynCodeTaskFactory as a replacement.
So, after some experimentation, here's a work-around while a fix works its way through the system; it functions by overriding the _BuildAppBundle
target, so can be fitted into existing build processes without hacking any of your downloaded packages.
- Add the
RoslynCodeTaskFactory
NuGet package to each affected project (probably just the.Desktop
one - Get the override target file
MacTemplateOverride.targets
from this gist
- Adjust the path to your
eto.platform.mac64
version (assumed 2.4.1 in default location) as needed - Add
<Import Project="[path to]\MacTemplateOverride.targets" />
at the end of each affected project to load the file from where you've saved it in your solution dotnet build
No comments :
Post a Comment