Как включить неуправляемую ссылку в приложении Windows Store

Я разрабатываю приложение для Windows Store. Я пытаюсь ссылаться на библиотеку, которая имеет эту структуру зависимостей:

  • unmanaged.dll
  • managedWrapper.dll (зависит от unmanaged.dll)

Из моего проекта приложения Windows Store я могу ссылаться только на управляемую сборку managedWrapper.dll. Я получаю сообщение об ошибке, если пытаюсь ссылаться на unmanaged.dll, что-то похожее на "неспособность добавить ссылку".

Мой проект компилируется отлично, однако во время выполнения я получаю исключение, не найденное файлом, потому что managedWrapper.dll не может найти unmanaged.dll. Я как бы ожидал такого поведения, но не знаю, как это исправить. Проблема в том, что я пытаюсь отлаживать свое приложение, но я понятия не имею, как Visual Studio 2012 его развертывает. Я могу только явно ссылаться на managedWrapper.dll в моем проекте, поэтому нет возможности сообщить Visual Studio, что unmanaged.dll также является зависимостью для моего приложения. Поскольку я понятия не имею, как Visual Studio развертывает приложение для Windows Store при отладке, я не знаю, где вручную копировать unmanaged.dll, чтобы обойти эту проблему.

Также, похоже, не существует способа получить фактический рабочий каталог моего приложения во время отладки, поэтому я еще не знаю, где скопировать unmanaged.dll, чтобы файл managedWrapper.dll не удался во время выполнения.

Кто-нибудь сталкивался с этой проблемой раньше?

1 ответ

Добавьте файл unmanaged.dll в файл в приложение Windows Store. Убедитесь, что вы установили свойства сборки для unmanaged.dll в Content и установите для параметра "Копировать в вывод".

Это должно скопировать dll в выходной каталог.

Вышеприведенное должно работать, но не может быть идеальным в случае, когда у вас есть несколько проектов, которые ссылаются на файл manage.dll. Например, если у вас также есть проект модульного тестирования, который ссылается на файл manage.dll, вам нужно будет сделать вышеописанное и добавить к нему unmanaged.dll.

licensed under cc by-sa 3.0 with attribution.