Developing with Visual Studio Code
Contents
Developing with Visual Studio Code#
This topic describes the steps needed to setup Visual Studio Code for AVBlocks .NET development on macOS. These steps have been verified to work on macOS Ventura 13.5.2.
.NET#
If you don’t have .NET installed follow the steps in the Setup .NET development environment on macOS post to configure a .NET development environment.
Visual Studio Code#
Download and install from Visual Studio Code site.
Open Visual Studio Code and press Cmd + Shift + p
. Select Shell Command: Install 'code' command in PATH
.
Also install the C# Dev Kit extension.
Close Visual Studio Code.
Create the .NET project#
mkdir -p ~/avblocks/net/simple-converter
cd ~/avblocks/net/simple-converter
# needed so that we can run the dotnet CLI
export PATH="$HOME/.dotnet:$PATH"
# We use 8.0 here but give the commands for other versions
# see: https://learn.microsoft.com/en-us/dotnet/core/tools/global-json
dotnet new globaljson --sdk-version 8.0.100 --roll-forward latestPatch
# dotnet new globaljson --sdk-version 7.0.404 --roll-forward latestPatch
# dotnet new globaljson --sdk-version 6.0.417 --roll-forward latestPatch
# create new console application and project
dotnet new console --framework net6.0 --use-program-main
# create new solution and add the project to it
dotnet new sln
dotnet sln add simple-converter.csproj
# add .gitignore
dotnet new gitignore
Automate the build#
Add the following Visual Studio Code specific files to the .vscode
subdir:
.vscode/tasks.json
#
{
"version": "2.0.0",
"tasks": [
{
"type": "dotnet",
"task": "build",
"group": "build",
"problemMatcher": [],
"label": "dotnet: build"
}
]
}
Setup Debugging#
Add the following Visual Studio Code specific files to the .vscode
subdir:
.vscode/launch.json
#
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "dotnet: build",
"program": "${workspaceFolder}/bin/Debug/net6.0/simple-converter.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false
}
]
}
Test the build#
Test the build by pressing Cmd + B
. Visual Studio Code should execute the dotnet build
command automatically.
Test the debugging#
Set a breakpoint on the first line of static void Main(string[] args)
inside Program.cs
. Press F5
to launch the debugger. It should stop at the breakpoint.
Update for AVBlocks .NET#
Replace the contents of
Program.cs
with this code:using PrimoSoftware.AVBlocks; namespace SimpleConverter { class Program { static void Main(string[] args) { Library.Initialize(); var inputInfo = new MediaInfo(); inputInfo.Inputs[0].File = "AAP.m4v"; if (inputInfo.Open()) { var inputSocket = MediaSocket.FromMediaInfo(inputInfo); var outputSocket = MediaSocket.FromPreset(Preset.Video.Generic.MP4.Base_H264_AAC); outputSocket.File = "AAP.mp4"; using (var transcoder = new Transcoder()) { transcoder.Inputs.Add(inputSocket); transcoder.Outputs.Add(outputSocket); if (transcoder.Open()) { transcoder.Run(); transcoder.Close(); } } } Library.Shutdown(); } } }
Download the Darwin version of AVBlocks for .NET (net60). The file you need will have a name similar to
avblocks-net60-v3.0.1-demo.1-darwin.zip
- the version number may differ.Unzip in a location of your choice, then copy the file
AVBlocks.clrcore.x64.dll
andlibAVBlocks.dylib
to the project’s directory.Add a reference to
AVBlocks.clrcore.x64.dll
Replace the contents of the
simple-converter.csproj
project file with this code:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <RootNamespace>SimpleConverter</RootNamespace> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <!-- This adds a reference to AVBlocks .NET dll--> <ItemGroup> <Reference Include="AVBlocks.clrcore.x64"> <HintPath>AVBlocks.clrcore.x64.dll</HintPath> </Reference> </ItemGroup> </Project>
Run the application#
Download the
AAP.m4v
HD movie from the Internet Archive and and save it in the project directory.Run the application in Visual Studio. Wait a few seconds for the Transcoder to finish. The converted file
AAP.mp4
will be in the project directory.
Troubleshooting#
You may get a
'DllNotFoundException' exception: Unable to load DLL 'libAVBlocks.dylib': The specified module could not be found.
To fix that, copy the filelibAVBlocks.dylib
to the project directory.Transcoder.Open
may fail if there is already a fileAAP.mp4
in the project directory. DeleteAAP.mp4
to solve that.