How can you find all versions of the dotnet debugger (vsdbg) - c#

Is it possible to get a list of versions of vsdbg? Microsoft seems to only provide a shell script to f.g. install it on some Linux host (f.e. Raspberry Pi).
But I would like to know all versions that are available maybe together with release notes or a change log. Does this exist?
Background: GLIBCXX version requirements have been bumped up on the latest version and it doesn't run on my target platform anymore. So the toolchain for linux-arm used for vsdbg is not compatible anymore.
I would like to at least find the latest version that works on the target platform.
Does anybody know a way to get a list of versions for this component?

Related

Can't run compiled .Net Core application on Ubuntu host [duplicate]

Does anyone know how to publish a .NET Core 3.0 application for ARM64?
I can only select "linux-arm" but no "linux-arm64".
Setting linux-arm in combination with x64 also doesnt work. It says the settings are not compatible.
As stated here it should already be supported: https://github.com/dotnet/core/blob/master/release-notes/3.0/3.0-supported-os.md
The linked article points to the supported OSs, not the list of runtime identifiers. An explanation of an RID and a list of common ones can be found in .NET Core RID Catalog. The full list can be found at the CoreFX repo, in runtime.json. linux-arm64 is included but that's only the base OS. There are a lot of specific identifiers like "debian-arm64", "debian.10-arm64", "rhel-arm64" and "ubuntu-arm64". You'll have to use the RID that corresponds to your distribution.
As the RID catalog explains, a runtime identifier consists of the OS, OS version, architecture and optional extra qualifiers.
[os].[version]-[architecture]-[additional qualifiers]
ubuntu-arm64 is the generic Ubuntu version for ARM64 while ubuntu.19.04-arm64 targets Ubuntu 19.04 specifically.
There's no specific version for Raspbian. If you want to target Raspberry in general, you'll have to use linux-arm. If you want to take advantage of the 4GB RAM model, assuming you already use a 64bit OS you may be able to target linux-arm64.
The linux-arm64 isn't available from the publish profile settings, but if you build it using linux-arm and manually edit your .pubxml file afterwards, it works on the pi just fine. As the link you provided shows, it is supported. It seems it hasn't been added to the tooling yet.
Just publish as usual and then edit .pubxml
Change
<RuntimeIdentifier>linux-arm</RuntimeIdentifier>
to
<RuntimeIdentifier>linux-arm64</RuntimeIdentifier>
Then you can publish on a 64bit Raspberry pi.

Are UWP Desktop Extensions a runtime framework or an SDK?

According to a reply by someone apparently from Microsoft in this answer it seems it's an SDK and he says I can use the 16299 Desktop Extensions version for targeting a 14393 machine.
On the other hand, in Visual Studio, it's added as a reference, which seems to indicate that it's a runtime executable that exists on the target computer and therefore I would need to target either 16299 or 14393, but not both.
I think it's more likely that it is an SDK, because if not - we wouldn't be able to target multiple versions of Windows 10 with one app (unless every version of the OS contains the older "runtimes" as well). But I haven't been able to find any source saying this explicitly.
So: Do I need to target the version on the target machine, or can I target the latest version?
It's an extension SDK to the Universal Windows Platform SDK. For your desktop extension SDK you want to pick the same version that you are using for your UWP SDK reference, e.g. if you are using Windows SDK 16299, use the desktop extension SDK 16299. Adding such a reference adds a reference to .winmd files, which contain the metadata for the API surface (those are not runtimes). There is only one UWP runtime on your machine (the one that came with the OS installation).
You can still use the 16299 SDK to build apps that target 14393. See this topic for versioning considerations, and the concepts of minversion, targetversion and version adaptive code:
https://learn.microsoft.com/en-us/windows/uwp/updates-and-versions/choose-a-uwp-version

Manually adding .NET 4.5 scripts to Unity: Potential issues?

I've recently had to some work in Unity that required classes only available in the later versions of .NET, which Unity does not yet support. I managed to download the very few scripts that I was missing and added it to my project and it seems to work fine. What I wanted to know is why can I not just take the entire .NET source and shove it into my projects? What are the implications of doing something like that?
EDIT: The scripts that I have added so far was the generic version of WeakReference as well as any dependencies that it needed (Contract in System.Diagnostics.Contract).
EDIT EDIT: I basically want to know why I can't simply just the C# class files found in the later versions of .NET to Unity, which uses an older version of .NET. Is it a software issue? Is it a hardware issue? Is it because Unity's system components were built in correspondence with the earlier version of .NET?
SHORT ANSWER:
Install the Visual Studio Tools for Unity (it should automatically get installed when you install Unity), when you do you can tell your .csproj in the "target framework" drop-down to target the special version of .NET Unity uses and you will only be able to compile dll's that have methods and types that Unity supports.
LONG ANSWER:
It is because Unity does not use the installed version of .NET on your computer. Unity uses Mono, and a very old version at that. This allows unity to be ran on multiple platforms and OSes. Because of that you can only use features that are in the supported version of Mono.
However, if you look at their roadmap the alpha build you will see
Scripting: C# Compiler Upgrade
Upgrade Mono C# compiler against our
current .Net 2.0 and 2.0 Subset profiles. Note that this is an upgrade
of the C# compiler only, not the full Mono runtime
Then further on in the "research" phase
Scripting: .NET Profile Upgrade
Upgrade .Net profile to 4.6 enabling access to the latest .Net functionality and APIs.
UPDATE:
You can get a experimental build that uses the 4.6 profile from the stickied post here.
Here are the notes for the 5.6.0b5 beta release
For this release, the Editor and the following players should be working:
Windows, OSX, Linux standalone
iOS with IL2CPP
Android with IL2CPP and Mono
Other platforms are known to not work yet, and are probably not worth installing.
Managed debugging via Visual Studio Tools for Unity or MonoDevelop is not supported in this release. If you want to use VSTU for
editing please use the special build linked at the bottom of this
post.
The compiler targets the C# 6 language.
The compiler by default will still target the .Net 4.6 framework profile.
Known issues
The Android/Mono build does not work properly with managed code stripping. Please disable managed code stripping for now.
For some projects, the Windows standalone player can crash on Windows 8.1. This is intermittent, so we would love to see any crash
reports or data about this
A similar question was answered before here. Like I described in your other question, you can "inject" newer stuff and use them, but sooner or later they'll backfire (e.g. can't compile to particular systems, can compile but cannot be published in whatever mobile store, surprisingly slow execution, huge builds, etc. Worst case your project will be compromised).
If you really cannot refactor the project you are working on and you feel you must use 'up-to-date technology', bear in mind the injected classes code must be data objects, means, not at all related to GameObjects.It is also adviced to derive from ScriptableObject when and where possible.EDIT: But I'd recommend what I told you earlier (refactor) or what the linked answer describes ('export' the code incompatible with mono/.net2.0 to an external dll and use it from there)

MonoDevelop 5.0 for Linux Distro?

According to the official website, Mono now supports System.Speech (in 5.0) . However, I am unable to reach a linux build of version 5.0
"Packages for MonoDevelop 5.0.0.878 not yet available. The latest available version is MonoDevelop 4.2.1"
Is there any way of achieving this? (tarballs, git?)
Notes
I am using ArchLinux
The best way to use the last monodevelop on Linux is to get it from git (it's very fast and very easy :)
Now I'm using it (5.1) on Ubuntu 14.04.
You can get the source code from here:
git clone git://github.com/mono/monodevelop.git
and then compile it: http://monodevelop.com/developers/building_monodevelop
Remember that you must have installed Mono runtime 3.x.
I am answering this a little earlier but i think it applies right now too because Xamarin have already provided Mono 3.6.0 builds(technical preview) for Debian and derivatives.And with in a few months the best way to get anything latest related to mono will be from Xamarin official builds.They will provide Mono and some important applications including Monodevelop for every Debian and Centos derived Linux distributions.
See this link......
mono builds for many Linux distributions
Having just built Monodevelop the hard way, I would recommend downloading a tarball from http://download.mono-project.com/sources/monodevelop/ as everything is already included and requires no additional downloads except the some apt-get installs.
If you really want to use the git repo here is how to fix the two major issues I had.
1) I'm behind a proxy so I had to edit git module files to not use the git protocol as described in this post https://stackoverflow.com/a/11410074/1516326
2) You have to Import the Mozilla LXR certificates for Mono, so NuGet can update correctly, using:
mozroots --import --sync
For the entire process follow these instructions: http://www.monodevelop.com/developers/building-monodevelop/

Linux: Mono installation and errors

Over the past weeks I struggled to get a working Mono installation without success.
I have tried it on Debian6_x64, Debian7_x64 and Ubuntu_12.04_x64.
I have installed it using the default mono-complete using apt-get, tried compiling it from GitHub and from alternative repositories. Either with Mono 2.x or 3.x, I followed several tutorials and nothing seems to work.
Unfortunately I don't have the error logs of past installs but at this moment my current situation is:
Ubuntu 12.04 x64
Mono JIT compiler version 3.4.0 (master/250756b Sun Mar 2 15:02:07 EST 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgen
I'm trying to run a c# program I compiled under windows and the error I get currently is:
user#host:/home/pck# mono Program.exe
The assembly mscorlib.dll was not found or could not be loaded.
It should have been installed in the `/usr/local/lib/mono/4.5/mscorlib.dll' directory.
I've been googling and nothing seems to work. I'd greatly appreciate any advice that could help.
Thanks!
The best thing to do nowadays is install Ubuntu Trusty 14.04 (LTS), which includes mono 3.2.8 in its default repositories (easy to install through apt-get).
It's not automatically granted that a C# application developed under Windows will work under Linux, using Mono libraries.
This depends on:
The libraries used to develop the application under Windows. As far as I know, for example, the libraries used in WPF have no compatibility in Mono. Have a look at this page to check the compatibility of your application.
The version of Mono installed. Each version introduces fixes, enhancements and support for new libraries. This means that your program will not work without any problem and you could encounter some errors.
About your issue, it seems that your application expects to find the libraries related to .NET Framework 4.5, but they're not installed. Install the correct version that supports them. Make sure your application doesn't use specific features of Windows platform. In that case, you will have to remove them.
There's a missing file in the mono 3.4 tarball that causes make install to fail right after it installed the 2.0 binaries. The other versions never get insalled, which is why you are missing 4.5
cd to the unpacked tarball and create the file yourself:
cd */path/to/unpacked*
echo -e '<Project xmlns=<a class="moz-txt-link-rfc2396E" href="http://schemas.microsoft.com/developer/msbuild/2003">"http://schemas.microsoft.com/developer/msbuild/2003">\n <Import Project="..\Microsoft.Portable.Core.props" />\n <Import Project="..\Microsoft.Portable.Core.targets" />\n</Project>' > mcs/tools/xbuild/targets/Microsoft.Portable.Common.targets
and then continue as usual (not sure if you have to configure and make again)
./configure --prefix=/opt/mono-3.4
make
make install
What have you done to implement portable code? Are you sure you have no platform-dependencies? Implement a one-liner:
System.Console.WriteLine("OK!");
Remove all unnecessary dependencies and use framework 2.0 (most stable).
If that works, the problem is not the Mono installation on Linux but something in your code.
The problem is your mono files are installed in /usr/lib/mono but it is looking for them in /usr/local/lib/mono which doesn't exist.
Copying the whole directory /usr/lib/mono to /usr/local/lib got it working for me.
This set of instructions (not the Ubuntu ones) worked for me in Ubuntu 12.04, I think.
I also cloned from github and followed their ./autogen.sh; make; make install; make check instructions just in case.

Categories

Resources