Include guide for the ICSharpCode.CodeConverter.Cli tool
This commit is contained in:
parent
5f570a4251
commit
0895d7015d
229
vb-migration/complete-converter-guide.md
Normal file
229
vb-migration/complete-converter-guide.md
Normal file
@ -0,0 +1,229 @@
|
||||
# Complete Guide to ICSharpCode.CodeConverter.Cli in VS Code
|
||||
|
||||
## Prerequisites
|
||||
1. .NET SDK installed on your system
|
||||
2. Visual Studio Code
|
||||
3. C# extension for VS Code (optional but recommended)
|
||||
|
||||
## Installation
|
||||
|
||||
Install the ICSharpCode.CodeConverter.Cli globally using the .NET CLI:
|
||||
```bash
|
||||
dotnet tool install -g ICSharpCode.CodeConverter.Cli
|
||||
```
|
||||
|
||||
## VS Code Configuration
|
||||
|
||||
### Basic File Conversion Setup
|
||||
|
||||
1. Create a tasks.json file in VS Code:
|
||||
- Press `Ctrl+Shift+P` (Windows/Linux) or `Cmd+Shift+P` (Mac)
|
||||
- Type "Tasks: Configure Task"
|
||||
- Select "Create tasks.json file from template"
|
||||
- Choose "Others"
|
||||
|
||||
2. Add the following configuration to tasks.json:
|
||||
```json
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Convert CS to VB",
|
||||
"type": "shell",
|
||||
"command": "code-converter",
|
||||
"args": [
|
||||
"convert",
|
||||
"${file}",
|
||||
"-l",
|
||||
"CS2VB"
|
||||
],
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Convert VB to CS",
|
||||
"type": "shell",
|
||||
"command": "code-converter",
|
||||
"args": [
|
||||
"convert",
|
||||
"${file}",
|
||||
"-l",
|
||||
"VB2CS"
|
||||
],
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Convert C# Project to VB",
|
||||
"type": "shell",
|
||||
"command": "code-converter",
|
||||
"args": [
|
||||
"convert-project",
|
||||
"${workspaceFolder}/${input:projectFile}",
|
||||
"-l",
|
||||
"CS2VB",
|
||||
"-t",
|
||||
"${workspaceFolder}/Converted"
|
||||
],
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Convert VB Project to C#",
|
||||
"type": "shell",
|
||||
"command": "code-converter",
|
||||
"args": [
|
||||
"convert-project",
|
||||
"${workspaceFolder}/${input:projectFile}",
|
||||
"-l",
|
||||
"VB2CS",
|
||||
"-t",
|
||||
"${workspaceFolder}/Converted"
|
||||
],
|
||||
"problemMatcher": []
|
||||
}
|
||||
],
|
||||
"inputs": [
|
||||
{
|
||||
"id": "projectFile",
|
||||
"type": "promptString",
|
||||
"description": "Project file to convert (e.g., MyProject.csproj)"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
### Single File Conversion
|
||||
|
||||
1. To convert a single file:
|
||||
- Open the file in VS Code
|
||||
- Press `Ctrl+Shift+P` (Windows/Linux) or `Cmd+Shift+P` (Mac)
|
||||
- Type "Tasks: Run Task"
|
||||
- Select either "Convert CS to VB" or "Convert VB to CS"
|
||||
|
||||
2. Example C# to VB.NET conversion:
|
||||
|
||||
Source file (test.cs):
|
||||
```csharp
|
||||
public class Calculator
|
||||
{
|
||||
public int Add(int a, int b)
|
||||
{
|
||||
return a + b;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Converted file (test.vb):
|
||||
```vb
|
||||
Public Class Calculator
|
||||
Public Function Add(a As Integer, b As Integer) As Integer
|
||||
Return a + b
|
||||
End Function
|
||||
End Class
|
||||
```
|
||||
|
||||
### Project Conversion
|
||||
|
||||
1. Command line syntax:
|
||||
```bash
|
||||
code-converter convert-project <source-project-file> [-t <target-directory>]
|
||||
```
|
||||
|
||||
2. Example commands:
|
||||
```bash
|
||||
# C# to VB.NET
|
||||
code-converter convert-project MyProject.csproj -l CS2VB -t ConvertedProject
|
||||
|
||||
# VB.NET to C#
|
||||
code-converter convert-project MyProject.vbproj -l VB2CS -t ConvertedProject
|
||||
```
|
||||
|
||||
### Project File Structures
|
||||
|
||||
1. C# Project (.csproj):
|
||||
```xml
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
```
|
||||
|
||||
2. VB.NET Project (.vbproj):
|
||||
```xml
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<RootNamespace>MyProject</RootNamespace>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
```
|
||||
|
||||
## Project Conversion Considerations
|
||||
|
||||
### 1. Project References
|
||||
- All project references are maintained
|
||||
- NuGet package references are preserved
|
||||
- Assembly references are carried over
|
||||
|
||||
### 2. Resource Handling
|
||||
- .resx files are copied to target directory
|
||||
- Resource identifiers are adjusted
|
||||
- app.config and web.config files are preserved
|
||||
|
||||
### 3. Special Conversion Options
|
||||
```bash
|
||||
# Preserve case when converting to VB.NET
|
||||
code-converter convert-project MyProject.csproj -l CS2VB -t ConvertedProject --preserve-case
|
||||
|
||||
# Skip resources when converting to C#
|
||||
code-converter convert-project MyProject.vbproj -l VB2CS -t ConvertedProject --skip-resources
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### 1. Command Not Found
|
||||
- Verify .NET tools directory is in PATH
|
||||
- Close and reopen VS Code
|
||||
- Check installation with `dotnet tool list -g`
|
||||
|
||||
### 2. Conversion Failures
|
||||
- Verify source code compiles
|
||||
- Check for correct conversion direction
|
||||
- Review output window for errors
|
||||
|
||||
### 3. Project Conversion Issues
|
||||
- Verify all references are accessible
|
||||
- Check framework versions match
|
||||
- Ensure NuGet packages are restored
|
||||
- Review namespace conflicts
|
||||
- Check for language-specific features
|
||||
|
||||
### 4. Post-Conversion Steps
|
||||
1. Build the converted project
|
||||
2. Run available tests
|
||||
3. Review generated code
|
||||
4. Check resource file accessibility
|
||||
5. Verify namespace organization
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. Always backup your source code before conversion
|
||||
2. Test the converted code thoroughly
|
||||
3. Review language-specific features that might need manual adjustment
|
||||
4. Keep original and converted projects separate
|
||||
5. Document any manual changes needed after conversion
|
||||
Loading…
Reference in New Issue
Block a user