Ссылка на файлы Windows SDK winmd и сборку VS Team Services
Я создал стандартную библиотеку C# .Net, которая ссылается на две библиотеки Windows SDK.
Ссылки
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 ответ
Обратитесь к этим шагам для решения этой проблемы:
- Щелкните правой кнопкой мыши проект в Visual Studio > Изменить {имя проекта}
- Заменить относительные пути этих сборок на абсолютные пути
Образец кода:
<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>