Search code examples
wpfcompiler-errorsreferencemsbuild.net-assembly

The type or namespace name 'Application' could not be found (are you missing a using d irective or an assembly reference?)


I'm trying to build a WPF aplication from command-line. And I'm using msbuild but build fails at compilation. I get this error.

enter image description here

I tried to add the reference assemblies but stil doesn't work. What do I have to do. I don´t want to use Visual Studio.

This is my code

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
    public partial class App : Application
    {

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            // Create the startup window
            MainWindow wnd = new MainWindow();
            // Do stuff here, e.g. to the window
            wnd.Title = "Something else";
            // Show the window
            wnd.Show();
        }
    }
}

This is the xaml code

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup">
    <Application.Resources></Application.Resources>
</Application>

And this is the msbuild code

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Compile Include="App.xaml.cs" />
    </ItemGroup>

    <Target Name="Build">
        <Csc Sources="@(Compile)"/>
    </Target>
</Project>

I've trying several sites and references to learn, perhaps everyone likes Visual Studio and I haven´t found a reference where I can develop with command-line.


Solution

  • Usually to compile project from command line I would suggest to use project file created by the Visual Studio. Try to add references for the framework libraries like below:

    <?xml version="1.0" encoding="utf-8"?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <ItemGroup>
        <Reference Include="System" />
        <Reference Include="System.Data" />
        <Reference Include="System.Xml" />
        <Reference Include="Microsoft.CSharp" />
        <Reference Include="System.Core" />
        <Reference Include="System.Xml.Linq" />
        <Reference Include="System.Data.DataSetExtensions" />
        <Reference Include="System.Net.Http" />
        <Reference Include="System.Xaml">
          <RequiredTargetFramework>4.0</RequiredTargetFramework>
        </Reference>
        <Reference Include="WindowsBase" />
        <Reference Include="PresentationCore" />
        <Reference Include="PresentationFramework" />        
        </ItemGroup>    
        <ItemGroup>
            <ApplicationDefinition Include="App.xaml">
              <Generator>MSBuild:Compile</Generator>
              <SubType>Designer</SubType>
            </ApplicationDefinition>
            <Page Include="MainWindow.xaml">
              <Generator>MSBuild:Compile</Generator>
              <SubType>Designer</SubType>
            </Page>
            <Compile Include="App.xaml.cs">
              <DependentUpon>App.xaml</DependentUpon>
              <SubType>Code</SubType>
            </Compile>
            <Compile Include="MainWindow.xaml.cs">
              <DependentUpon>MainWindow.xaml</DependentUpon>
              <SubType>Code</SubType>
            </Compile>
        </ItemGroup>
        <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    </Project>
    

    Additional information about using an MSBuild is here: Using MSBuild