Create a new Visual Studio application using C# named Desks that computes the price of a desk and whose Main() method calls the following methods:

A method to accept the number of drawers in the desk as input from the keyboard. This method returns the number of drawers to the Main() method.
A method to accept as input and return the type of wood, m for mahogany, o for oak, p for pine.
A method that accepts the number of drawers and wood type, and calculates the cost of the desk based on the following:
Pine desks are $100.
Oak desks are $140.
All other woods are $180.
A $30 surcharge is added for each drawer. · This method returns the cost to the Main() method. ·
A method to display all the details and the final price. I have tried this and I can only get half of the code to work.

Which half of your main method works and which half doesn't?

To create a new Visual Studio application using C# named "Desks" that computes the price of a desk and calls the methods you described, follow these steps:

1. Open Visual Studio and create a new C# console application.
2. In the Solution Explorer, right-click on the project name and select "Rename" to change the project name to "Desks".
3. Rename the default `Program.cs` file to `Desks.cs` by right-clicking on it in Solution Explorer and selecting "Rename".
4. Open `Desks.cs` and replace the existing code with the following code:

```csharp
using System;

namespace Desks
{
class Desks
{
static void Main()
{
// Call method to accept the number of drawers
int numDrawers = GetNumDrawers();

// Call method to accept and return the type of wood
char woodType = GetWoodType();

// Call method to calculate the cost of the desk
double deskCost = CalculateDeskCost(numDrawers, woodType);

// Call method to display all the details
DisplayDetails(numDrawers, woodType, deskCost);

// Wait for user input before closing the console
Console.WriteLine("\nPress any key to exit...");
Console.ReadKey();
}

static int GetNumDrawers()
{
Console.Write("Enter the number of drawers: ");
int numDrawers = int.Parse(Console.ReadLine());
return numDrawers;
}

static char GetWoodType()
{
Console.Write("Enter the type of wood (m for mahogany, o for oak, p for pine): ");
char woodType = char.ToLower(Console.ReadKey().KeyChar);
return woodType;
}

static double CalculateDeskCost(int numDrawers, char woodType)
{
double cost;
switch (woodType)
{
case 'p':
cost = 100;
break;
case 'o':
cost = 140;
break;
default:
cost = 180;
break;
}

// Add surcharge for each drawer
cost += 30 * numDrawers;
return cost;
}

static void DisplayDetails(int numDrawers, char woodType, double deskCost)
{
Console.WriteLine("\n------------------------");
Console.WriteLine("Desk Details");
Console.WriteLine("------------------------");
Console.WriteLine("Number of Drawers: {0}", numDrawers);
Console.WriteLine("Wood Type: {0}", GetWoodTypeName(woodType));
Console.WriteLine("Final Price: ${0}", deskCost);
}

static string GetWoodTypeName(char woodType)
{
string woodTypeName;
switch (woodType)
{
case 'p':
woodTypeName = "Pine";
break;
case 'o':
woodTypeName = "Oak";
break;
default:
woodTypeName = "Other";
break;
}
return woodTypeName;
}
}
}
```

5. Save the file (`Ctrl + S`).

Now you can build and run the "Desks" application. It will prompt the user for the number of drawers, the type of wood, calculate the cost of the desk, and display all the details including the final price.

Note: Make sure to handle any input validation or error checking as per your requirements.