1

I have this project which works under GNU/Linux, both with dotnet-sdk-5.0 and (with some #if) even with Mono.

Now I try to run it on Windows®, and nmake win ends with…

        csc -nologo -t:library -out:ecn-bitn.dll unmngd.cs monosupp.cs
unmngd.cs(184,48): error CS0246: The type or namespace name 'Span<>' could not be found (are you missing a using
directive or an assembly reference?)
unmngd.cs(189,48): error CS0246: The type or namespace name 'Span<>' could not be found (are you missing a using
directive or an assembly reference?)
unmngd.cs(75,47): error CS0246: The type or namespace name 'Span<>' could not be found (are you missing a using d
irective or an assembly reference?)
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\bin\Ro
slyn\csc.EXE"' : return code '0x1'
Stop.

I’ve read that this is possibly in System.Memory.dll but…

C:\misc\e\dotnet>csc -nologo -t:library -out:ecn-bitn.dll unmngd.cs monosupp.cs -r:System.Memory.dll
error CS0006: Metadata file 'System.Memory.dll' could not be found

… that somehow cannot be found, despite…

myusername@DESKTOP-PN6OO9E:/mnt/c/misc/e/dotnet $ locate -i system.memory.dll
/mnt/c/Program Files/WindowsApps/Microsoft.YourPhone_1.21102.134.0_x64__8wekyb3d8bbwe/System.Memory.dll
/mnt/c/Program Files/WindowsApps/Microsoft.YourPhone_1.21102.134.0_x64__8wekyb3d8bbwe/YourPhoneAppProxy/System.Memory.dll
/mnt/c/Program Files/WindowsApps/Microsoft.YourPhone_1.21102.134.0_x64__8wekyb3d8bbwe/YourPhoneServer/System.Memory.dll
/mnt/c/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/3.1.0/ref/netcoreapp3.1/System.Memory.dll
/mnt/c/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/5.0.0/ref/net5.0/System.Memory.dll
/mnt/c/Program Files/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CrossRepositorySearch/ServiceHub/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/FSharp/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/ManagedLanguages/VBCSharp/LanguageServices/InteractiveHost/Desktop/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Microsoft/AppInsights/Contracts/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Microsoft/AppInsights/Core/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Microsoft/ConnectedServices/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Microsoft/ConnectedServices/Authentication/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Microsoft/IntelliCode/CLI/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Microsoft/IntelliCode/CLI/Extractors/CPlusPlus/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Microsoft/IntelliCode/CLI/Extractors/csharp/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Microsoft/LiveShare/Agent/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Xamarin/Templates/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/Extensions/Xamarin.VisualStudio/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/PrivateAssemblies/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/PublicAssemblies/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/ReferenceAssemblies/Microsoft/Framework/MonoAndroid/v1.0/Facades/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/ReferenceAssemblies/Microsoft/Framework/MonoTouch/v1.0/Facades/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/ReferenceAssemblies/Microsoft/Framework/Xamarin.Mac/v2.0/Facades/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/ReferenceAssemblies/Microsoft/Framework/Xamarin.TVOS/v1.0/Facades/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/ReferenceAssemblies/Microsoft/Framework/Xamarin.WatchOS/v1.0/Facades/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/ReferenceAssemblies/Microsoft/Framework/Xamarin.iOS/v1.0/Facades/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/ServiceHub/Hosts/ServiceHub.Host.CLR.AnyCPU/PrivateHost/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/ServiceHub/Hosts/ServiceHub.Host.CLR.x64/PrivateHost/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/ServiceHub/Hosts/ServiceHub.Host.CLR.x86/PrivateHost/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/ServiceHub/Services/Microsoft.Developer.IdentityService/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/ServiceHub/controller/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/CoreCon/Binaries/Phone Tools/Debugger/CoreClr/arm64/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/Roslyn/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/amd64/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Xamarin/Android/bcl/Facades/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Xamarin/Mac/System.Memory.dll
/mnt/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Xamarin/iOS/System.Memory.dll

… multiple copies of this existing (running locate in WSL1).

What do I have to do to make this work in Windows® as well? Hardcoding paths on a development system is, obviously, a no-go for a portable project.

In case it’s relevant: on GNU/Linux, the Makefile calls csc as follows because a separate csc binary no longer exists:

dotnet /usr/share/dotnet/sdk/5.0.403/Roslyn/bincore/csc.dll -nologo -lib:/usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.12 -r:netstandard.dll -r:Microsoft.CSharp.dll -r:System.dll $(cd /usr/share/dotnet/shared/Microsoft.NETCore.App/5.0.12 && for x in System.*.dll; do echo -r:$x; done) -r:Microsoft.Win32.Primitives.dll -t:library -out:ecn-bitn.dll unmngd.cs monosupp.cs

I doubt it’s relevant since the Windows® build, using vsdevcmd.bat, also uses Roslyn (here, from VS2019).

I’ve just upgraded VS2019 to its latest version 16.11.7 and made sure I have the “.NET cross-platform development” workload enabled, as well as multiple related individual components.


Update: by compiling and running a single-line .cs file…

System.Console.WriteLine(System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription);

… I found out that csc on Windows defaults to building for .NET 4.8 Span<T> was only added with suitable support (e.g. in the IPAddress constructor) in .NET 5, so I guess I’ll have to do something like I do with the dotnet tool on GNU/Linux.

mirabilos
  • 5,123
  • 2
  • 46
  • 72

0 Answers0