Search code examples
c#wpfdotnet-new

Issues running program in Visual Studio Code


I'm attempting to run a WinExe with <UseWPF>true</UseWPF>, but it is not even running a simple Hello World program. I'm not sure what's wrong at this point, the only clue is this inner exception.

An unhandled exception of type 'System.BadImageFormatException' occurred in CSharpProgram.dll: 'Could not load file or assembly 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Reference assemblies cannot be loaded for execution. (0x80131058)'

Here is my .csproj file:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net7.0-windows</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <UseWPF>true</UseWPF>
  </PropertyGroup>
</Project>

Here is the program:

using System;

public class Program
{
    public static void Main() {
        Console.WriteLine("Hello World!");
    }
}

Any help is greatly appreciated.


Solution

  • I'm not familiar with Visual Studio Code, so the following isn't an answer for how to create a WPF Application in VS Code, but if desired, one can create a WPF Application using dotnet new .

    To see installed SDKs:

    • dotnet --info

    To see available templates

    • dotnet new list

    To create a new WPF Application:

    • dotnet new wpf --framework <TargetFramework> --output <fully-qualified path>

    see TargetFramework

    For example, create a new project in a subfolder of your Documents folder (ex: %UserProfile%\Documents\Projects)

    Note: Below you'll notice two subdirectories with the same name (WpfAppTest). The first one is for the solution and the second subfolder (with the same name) is for the project - this is the same structure Visual Studio creates so your solution/project will be usable by both Visual Studio Code and Visual Studio.

    dotnet new wpf --framework net7.0 --output "%UserProfile%\Documents\Projects\WpfAppTest\WpfAppTest"
    

    Create solution file:

    Note: See dotnet sln for more information.

    dotnet new sln --name "WpfAppTest" --output "%UserProfile%\Documents\Projects\WpfAppTest" --project "%UserProfile%\Documents\Projects\WpfAppTest\WpfAppTest\WpfAppTest.csproj"
    

    Add Project to Solution File:

    dotnet sln "%UserProfile%\Documents\Projects\WpfAppTest" add "%UserProfile%\Documents\Projects\WpfAppTest\WpfAppTest\WpfAppTest.csproj"
    

    Optional - Add NuGet package

    If desired, search for desired NuGet package, for example NuGet package Microsoft.Data.SqlClient.

    Download and add desired NuGet package to project (ex: Microsoft.Data.SqlClient)

    dotnet add "%UserProfile%\Documents\Projects\WpfAppTest\WpfAppTest\WpfAppTest.csproj" package "Microsoft.Data.SqlClient"
    

    See dotnet add package for more information.


    To Build Application:

    dotnet build "%UserProfile%\Documents\Projects\WpfAppTest\WpfAppTest.sln"
    

    To Run Application:

    dotnet run --project "%UserProfile%\Documents\Projects\WpfAppTest\WpfAppTest\WpfAppTest.csproj"
    

    Use your favorite editor to develop/modify the Console App. Both Visual Studio and Visual Studio Code are available here.