Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Variables in supplied ".target" file seems undefined leading to compilation error #140

Open
lkluc opened this issue Dec 16, 2020 · 6 comments

Comments

@lkluc
Copy link

lkluc commented Dec 16, 2020

Description

I have the following issue :

2>------ Rebuild All started: Project: <project>, Configuration: Release x64 ------
2>		"\"  -o "Lexer.fs" --unicode Lexer.fsl
2>		'"\"' n'est pas reconnu en tant que commande interne
2>		ou externe, un programme exécutable ou un fichier de commandes.
2><projectdir>\packages\FsLexYacc.10.2.0\build\fsyacc\netcoreapp3.1\FsLexYacc.targets(36,3): error MSB3073: The command ""\"  -o "Lexer.fs" --unicode Lexer.fsl" exited with code 9009.

(I replaced my project name and directory with <> in the copied text above)
(the text in french translate to :"...is not recognized as an internal or external command, executable program, or batch file.")

For the first part of the command to be "\", I suspect some variables in the file "FsLexYacc.targets" gets undefined (path and exec I guess), which seems to lead to faulty command.

I had been using the library without any problems up to date, this problem came when I migrated from version 10.0 to 10.2 of FsLexYacc.

The project is built with Visual Studio 2019, and the framework is ".NET Framework 4.6.1".

Known workarounds

None known.

Related information

  • Operating system : Windows
  • .NET Runtime : .NET Framework 4.6.1

Thanks in advance !

@sergey-tihon
Copy link
Member

You can continue use 10.0, there were no significant changes till then.
10.1 - is compiler with .net core 3.1 and in 10.2 there was added support for .net 5-only build envy.

I see that in 10.1 were made a decision to drop .NET framework support #124
so package no longer contain binaries compiled for net472 and variables that you used https://github.com/fsprojects/FsLexYacc/pull/124/files#diff-db81e7e7e4970636cbf12427aead8bbdb359befca5d71f5016bc862c80ae274aL18

@lkluc
Copy link
Author

lkluc commented Jan 14, 2021

Hello Sergey,

Thanks for the heads-up!

I don't want to sound rude (and I guess you were not personally implicated in this decision) but I beg to differ, I was the one which requested this change :
#102
...and now I'm stuck at 10.0, not able to use the patch. Although I must admit, the workaround of the enhancement works for now.

I used FsLexYacc in a tool part of a bigger toolchain of a very sizable and important project at my place. I'm not sure I can easily steer all other developers in migrating into .NET core, it implies changes from developers in my team using my library and changes in other company divisions using our engine! I'll try to see what I can do with .NET standard to interop both worlds, but I'm concern about dropping support too early of a framework still alive like this!

Do you know if dropping support for .NET Framework was really unavoidable? In other word, do you know what was the motivation behind the decision ?

Thanks!

@dsyme
Copy link
Contributor

dsyme commented Jan 14, 2021

Do you know if dropping support for .NET Framework was really unavoidable? In other word, do you know what was the motivation behind the decision ?

Not unavoidable, but it is jsut really costly (in terms of engineering complexity) to maintain .NET Framework support, especially both Mono and .NET Framework windows testing.

@lkluc
Copy link
Author

lkluc commented Jan 14, 2021

Ok, managed to recreate my project with .NET Standard 2.0. However, the problem is still there :

error MSB3073: The command ""\" -o "Lexer.fs" --unicode Lexer.fsl" exited with code 9009

The package should work under .NET Standard 2.0, right?

@dsyme
Copy link
Contributor

dsyme commented Jan 14, 2021

Yes, though it may be failing with hidden diagnostics for whatever reasons. May be try dotnet build -v:d and check logs carefully. If it still fails maybe try to invoke fslex directly from the command line.

@lkluc
Copy link
Author

lkluc commented Jan 14, 2021

It seems it worked correctly when using the provided "dotnet build" command. However my project was still not compiling from Visual Studio interface. I managed to get it work by adding these properties in the "fsproj" file :

  <PropertyGroup>
    <OutputType>Library</OutputType>
    <FsLexToolPath>..\packages\FsLexYacc.10.2.0\build\fslex\netcoreapp3.1</FsLexToolPath>
    <FsYaccToolPath>..\packages\FsLexYacc.10.2.0\build\fsyacc\netcoreapp3.1</FsYaccToolPath>
    <FsLexToolExe>fslex.dll</FsLexToolExe>
    <FsYaccToolExe>fsyacc.dll</FsYaccToolExe>
    <FsLexYaccToolRunner>dotnet </FsLexYaccToolRunner>
  </PropertyGroup>

I believe the NuGet package for 10.2.0 is not working correctly with .NET Standard 2.0 projects, maybe the problems lies in the configuration in the supplied "targets" file? ...as if those variables where undefined, or the "targets" files does not get found by the VS build system... ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants