我需要使用命令行C#编译器(即csc.exe
)编译我使用Visual Studio编写的简单WPF应用程序。
问题是错误CS0103
- 编译器说我的程序中没有InitializeComponent()
方法。但那是错的,因为我添加了System.Xaml.dll。有人知道如何解决这个问题吗?
答案 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
使用这种方法,您可以轻松查看出现的问题并进行调试。