引用 Windows SDK winmd 文件和 VS Team Services 构建

Referencing Windows SDK winmd files and VS Team Services build

我创建了一个 C# .Net 标准库,它引用了两个 Windows SDK 库。

参考文献是

这适用于我的本地开发机器。

VS Team Services 构建首先显示以下警告:

2018-06-13T01:17:22.3393846Z ##[warning]C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild.0\Bin\Microsoft.Common.CurrentVersion.targets(2106,5): Warning MSB3245: Could not resolve this reference. Could not locate the assembly "Windows.Foundation.FoundationContract". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

稍后失败并出现以下错误:

Error CS0246: The type or namespace name 'Windows' could not be found (are you missing a using directive or an assembly reference?)

天真地,我以为我只需要将 Visual Studio 中的 Copy Local to True 设置为 true 就可以了。我错了

问题

如何在 VSTS 中构建引用 SDK winmd 文件的项目?

参考这些步骤来处理这个问题:

  1. 右键单击 Visual Studio 中的项目 > 编辑 {project name}
  2. 将这些程序集的相对路径替换为绝对路径

示例代码:

<ItemGroup>
    <Reference Include="Windows.Foundation.FoundationContract">
      <HintPath>C:\Program Files (x86)\Windows Kits\References.0.16299.0\Windows.Foundation.FoundationContract.0.0.0\Windows.Foundation.FoundationContract.winmd</HintPath>
      <IsWinMDFile>true</IsWinMDFile>
    </Reference>
    <Reference Include="Windows.Foundation.UniversalApiContract">
      <HintPath>C:\Program Files (x86)\Windows Kits\References.0.16299.0\Windows.Foundation.UniversalApiContract.0.0.0\Windows.Foundation.UniversalApiContract.winmd</HintPath>
      <IsWinMDFile>true</IsWinMDFile>
    </Reference>
  </ItemGroup>