Как заставить Visual Studio правильно размещать библиотеки DLL из пакета Nuget в приложениях UWP? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть приложение на основе C ++ UWP, которое делает ссылку на DLL из пакета Nuget.Приложение работает нормально, но когда я пытаюсь его запустить, запуск завершается неудачно с ошибкой 0xc0000135 («Не найден зависимый dll»).

После нескольких отладок я обнаружил, что указанная DLL-библиотека находится в каталоге Debug, но не в каталоге Debug \ AppX (где она должна быть).Если я вручную копирую DLL в каталог AppX, приложение запускается, но я не хочу делать это все время.

Как заставить Visual Studio правильно разместить эту DLL?

1 Ответ

0 голосов
/ 30 ноября 2018

Как заставить Visual Studio правильно размещать библиотеки DLL из пакета Nuget в приложениях UWP?

Точно так же, как сказал VTT, вы можете использовать пост-сборку для копирования файла DLL в Debug.\ AppX directory:

xcopy /Y <PathForDll>\Your.dll $(TargetDir)AppX\

Кроме того, поскольку этот dll идет из пакета nuget, вы можете добавить задачу копирования в файл .targets и установить этот .targets в папку \build в nuget.пакет, так что вам не нужно добавлять событие после сборки после установки пакета nuget (что заставляет вас чувствовать себя немного неловко).

Для этого добавьте файл .targets в папку \buildв файле .nuspec:

<files>  
    <file src="ProjectName.targets" target="build/ProjectName.targets" />  
</files>

Добавьте следующий код в файл .targets:

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="AfterBuild">
    <ItemGroup>
      <FilesToCopy Include="<PathForDll>\Your.dll"/>
    </ItemGroup>
    <Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(TargetDir)AppX\"/>
  </Target>
</Project>

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...