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

Known limitations #16

Open
3 tasks
GrahamTheCoder opened this issue Jan 20, 2018 · 2 comments
Open
3 tasks

Known limitations #16

GrahamTheCoder opened this issue Jan 20, 2018 · 2 comments
Labels
C# -> VB Specific to C# -> VB conversion help wanted VB -> C# Specific to VB -> C# conversion

Comments

@GrahamTheCoder
Copy link
Member

GrahamTheCoder commented Jan 20, 2018

Visual studio versions

For the VS extension, only VS2019 and VS2022 are supported. Since there is a free version of VS2022 community edition, it isn't worth the effort to continue supporting older versions which can instead be directed to better quality code conversion - the main purpose of this tool.

If you have a project type that doesn't even load in VS2019+, you can try the command line converter, or manually install 8.5.0 - the last release that supported VS2017.


Conversion issues

For discovering issues, the easiest way is to put other open source projects through the converter. One good example is this attempt to use all types of C# syntax in one file.

Awaiting user request/repro/confirmation

These should be broken out into actual issue descriptions when a repro is available.

  • MyNamespace.Dynamic .designer.cs not created for sdk-style project
  • Type conversion may not work for attribute constructors that take an enum but have integer and object overloads

Common cases may be implemented on popular request

  • #Pragma preprocessor directives
  • Many different project types exist (ASP NET, Winforms, WPF, MAUI, etc.). The project file conversion just applies some simple transforms to the xml - I know of no more general approach (there's nothing similar to the roslyn library for editing those files), so each special case that differs between vb and cs must be fixed as it's found.
  • Non-compiling solutions (e.g. missing references).
    • In general this is an impossible problem to solve, because the information just isn't present, but if there are particularly common cases where we could use a heuristic to guess correctly more of the time, their implementation will be considered.

VB to C#:

  • Exponentiation (^) and Like operator overloads cannot be converted, there is no equivalent
    • It would be possible to turn them into normal methods, and call those methods from other code that's being converted, though the public API would be different.

Very unlikely to happen

These things have no direct equivalent in the target language, and are therefore difficult to convert, and even if converted would probably yield ugly code. Therefore they are unlikely to be worked on unless there's significant need for them.

Please comment if you want to encourage others to work on, or work on yourself, or have an idea for how a subset of the functionality could be simply implemented to cover common cases.

C# to VB:

  • #if directives C# -> VB: If pre-processing directive contents are not converted. #489
  • Unsafe code cannot be converted in general, there is no equivalent
    • The recommended approach would be to move the unsafe code into a C# assembly and reference it there. This usually works well since it's usually low level code with few dependencies.
    • Note: In some cases, you may be able to use Span and Memory rather than pointers to avoid needing unsafe
  • Syntax from beyond C# 8 isn't supported. There are no plans to do so, though I'm happy to assist someone in learning what's needed.

VB to C#

@GrahamTheCoder GrahamTheCoder added C# -> VB Specific to C# -> VB conversion VB -> C# Specific to VB -> C# conversion labels Apr 9, 2018
@MatthewDancz
Copy link

I have been trying to convert a test project in C# that uses interfaces to VB to experiment with this cool tool. I have noticed that the interfaces are not converting correctly to Visual Basic code. I only know this because the conversion produces code that doesn't compile because the code doesn't successfully implement the interface on the VB side. I'm using Code Converter v5.7.0.0 and Visual Studio 2017 v15.7.2 Are interface conversions a supported feature, or will they be supported at a later time?

@GrahamTheCoder
Copy link
Member Author

GrahamTheCoder commented May 25, 2018

Hi @MatthewDancz, thanks for getting in touch.

Yes, interfaces should be converted correctly in general, but it sounds like you've found a bug. If you create a new github issue and fill in the template with the code that's doesn't convert properly, that should give enough information to be able to fix the problem. Ideally post the code for the interface and the class that implements it, since the issue could be with either of them.

Thanks,
Graham.

EDIT: This was filed and fixed as issue #125

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C# -> VB Specific to C# -> VB conversion help wanted VB -> C# Specific to VB -> C# conversion
Projects
None yet
Development

No branches or pull requests

2 participants