从命令行构建 Windows 通用 C# class 库

Build Windows Universal C# class library from command line

我目前正在尝试构建面向 Windows Phone 8.1、Windows 应用程序 8.1 和 Windows 10 通用的 Microsoft 运行时组件 C# class 库应用程序。为了完成这个介绍,我的环境运行 Windows 8.1,我使用 Visual Studio 2015 作为 IDE.

为了自动化流程,在我的团队中,我们需要通过命令行编译该库,以便在其他地方使用生成的 .winmd 文件。尽管解决方案和项目可以使用 IDE 完美编译,但我们无法通过 windows 命令行编译我们的项目。经过一些调查,我们发现了一个可能有效的命令,但我们收到错误,告诉我们缺少一些参数。命令行是下一个:

C:\solutionDir>"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" project\project.csproj

清除项目后,并执行这个命令,我们得到一堆这样的错误:

"C:\solutionDir\project\project.csproj" (default target) (1) ->
(CoreCompile target) ->
  Class1.cs(2,15): error CS0234: The type or namespace name 'System'
  does not exist in the namespace 'Windows' (are you missing an assembly
  reference?) [C:\solutionDir\project\project.csproj]

其他错误,但都来自同一个缺失的命名空间 'Windows',是名称为 ApplicationModelDevicesSecurity 和 [=18 的命名空间缺失=].此命名空间名称是 Windows RT C# API 的一部分,看起来它在执行此命令期间不存在。

正如我所说,看起来我们没有指定实现编译所需的所有参数,或者我们可能做得不正确。 构建 VS C# 项目的正确方法是什么class 以命令行为目标通用应用程序的库

我假设我使用的是 MSBuild.exe 的旧版本。为了让它工作,我必须安装 standalone version of the MSBuild。命令文件可以在这里找到:

"C:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" project\project.csproj

您可以使用以下参数指定配置(调试|发布):

"C:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" project\project.csproj /property:Configuration=Release

甚至更好:

"C:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" project\project.csproj /t:rebuild /property:Configuration=Release