如何使用命令行编译WPF程序?

时间:2015-11-02 21:43:12

标签: c# wpf

我需要使用命令行C#编译器(即csc.exe)编译我使用Visual Studio编写的简单WPF应用程序。

问题是错误CS0103 - 编译器说我的程序中没有InitializeComponent()方法。但那是错的,因为我添加了System.Xaml.dll。有人知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:7)

使用MSBuild构建将比使用csc.exe更容易。获取正确的MSBuild(Path to MSBuild)的路径,因为您的计算机上可以有多个MSBuild版本,大多数情况下每个Visual Studio安装一个版本。

然后,只需构建项目文件:

msbuild YourProject.csproj /p:Configuration=Release

,输出将在bin / Release文件夹中。

答案 1 :(得分:4)

  

使用命令行编译构建WPF应用程序完全使用代码编写的WPF应用程序(即无标记)可以通过   使用命令行编译器。例如,考虑WPF独立   应用程序,用C#编写,包含以下源代码文件:

     
      
  • 应用程序定义文件(app.cs)。
  •   
  • 列表项
  •   
     

一个窗口(mainwindow.cs)。

     

可以使用C#命令行编译器构建此应用程序,   csc.exe,使用以下命令:

csc.exe
/out:WPFApplication.exe
/target:winexe
app.cs mainwindow.cs
/reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\presentationframework.dll"
/reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\windowsbase.dll"
/reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\presentationcore.dll"
     

在这个例子中:

     
      
  • / out参数用于指定已编译的可执行应用程序(WPFApplication.exe)的名称。
  •   
  • / target参数用于指定编译的应用程序类型(Microsoft Windows可执行文件)。
  •   
  • 指定了C#源代码文件(app.cs和mainwindow.cs)
  •   
  • / reference参数用于标识.NET Framework 3.0程序集以及源代码中使用的类型。
  •   
     

虽然这个应用程序由两个源代码文件命令组成   行编译可用于构建更多的应用程序   复杂性(参见从命令行构建(CSharp))。然而,   命令行编译不支持WPF的编译   包含可扩展应用程序标记语言的应用程序   (XAML)标记源代码文件。此外,命令行编译   不够强大,不足以支持所有的构建要求   典型的WPF应用程序(包括配置)所需的   管理和ClickOnce应用程序和部署清单   代。支持WPF更复杂的构建要求   应用程序,WPF集成并扩展了MSBuild。

请注意,MSBuild可能是构建更复杂解决方案的更好选择,大多数持续集成解决方案都支持它。

更多信息: https://msdn.microsoft.com/en-us/library/aa970678(v=vs.85).aspx

答案 2 :(得分:1)

如果您不介意开放环境,那么编译的确定方法是使用:

C:> devenv HacksWinSample.sln / build release

请参阅http://archive.oreilly.com/pub/h/5186

使用这种方法,您可以轻松查看出现的问题并进行调试。