Ссылка на файлы Windows SDK winmd и сборку VS Team Services - PullRequest
0 голосов
/ 13 июня 2018

Я создал C # .Net Standard библиотеку, которая ссылается на две библиотеки Windows SDK.

enter image description here

Ссылки:

  • C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0\Windows.Foundation.FoundationContract\3.0.0.0\Windows.Foundation.FoundationContract.winmd
  • C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0\Windows.Foundation.UniversalApiContract\5.0.0.0\Windows.Foundation.UniversalApiContract.winmd

Это работает на моей локальной машине разработчика.

В сборке VS Team Services сначала отображается следующее предупреждение:

2018-06-13T01:17:22.3393846Z ##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.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?)

Наивно, я думал, что мне просто нужно установить Копировать Локальный в True в Visual Studio в true, и все будет хорошо.Я был не прав.

Вопрос

Как в VSTS создавать проекты, которые ссылаются на файлы SDK winmd?

1 Ответ

0 голосов
/ 14 июня 2018

Для решения этой проблемы выполните следующие действия:

  1. Щелкните правой кнопкой мыши проект в Visual Studio> Изменить {имя проекта}
  2. Заменить относительные пути этих сборок на абсолютныепути

Пример кода:

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