Как запустить проект с использованием сборки C++/CLI на другом компьютере?

У меня есть сторонняя сборка C++, которую мне нужно использовать в моем проекте C#. Поэтому я написал оболочку C++/CLI для сборки C++. Все компилируется и работает нормально на моей машине для разработки.

Но когда я копирую содержимое моего bin каталог на одну из наших других машин, он падает. Причина в том, что он не может загрузить мою сборку C++/CLI-Wrapper. Это дает типичное сообщение: FileNotFoundException: Could not load file or assembly 'MyWrapperAssembly' or one of its dependencies.

Поэтому я провел некоторые исследования: я убедился, что MyWrapperAssembly не может быть найдена, и добавил обработчик события в событие разрешения сборки. В этом обработчике я загрузил MyWrapperAssembly только для отражения. Затем я загрузил все упомянутые сборки. Работает только отражение MyWrapperAssembly. Поэтому я уверен, что файл можно найти. Но когда я пытаюсь загрузить его

Assembly.LoadFrom("hiddenDirectory\MyWrapperAssembly.dll");

Вылетает с вышеупомянутой ошибкой FileNotFoundException: Could not load file or assembly 'MyWrapperAssembly' or one of its dependencies.

Так как отражение только нагрузка работала, я был уверен, что в слое C++ должно быть что-то не так. Я сравнил установленные версии C++ Redistributable на моей машине разработки и на тестовой машине и заметил, что некоторые пакеты отсутствуют. Поэтому я скачал и установил эти пакеты на тестовой машине:

И это не сработало. Затем я протестировал 6 разных компьютеров. Моя программа работает на 3 компьютерах и вылетает на 3 других. Единственное, что отличает ПК, это Microsoft Visual C++ 2010 Runtime, Когда он установлен, кажется, работает.

Но я не могу найти установщик для этого пакета в Интернете. Поэтому я установил Visual Studio 2013 на одном компьютере, где произошел сбой моей программы. После того, как я установил Visual Studio (и вместе с тем C++ Runtime), моя программа запускается.

Поэтому я предполагаю, что мне нужна среда выполнения C++. Это не вариант требовать Visual Studio на ПК наших клиентов. Поэтому мне нужно развернуть среду выполнения C++. Но вопрос в том,

Где взять среду выполнения Visual C++?

Или кто-нибудь знает, если я скучаю по другой вещи?

2 ответа

Вы можете получить самые последние версии среды выполнения здесь: последние поддерживаемые загрузки Visual C++.

Вам понадобится как минимум та, которая соответствует версии VS, которую вы использовали для создания проекта C++/CLI (поэтому, если вы используете VS2010, вам потребуется среда выполнения VC++ 2010).

Затем, если библиотека C++, которую вы упаковываете, также нуждается во времени выполнения VC++, вам придется установить и ее. Поставщик библиотеки должен был рассказать вам о зависимостях.

Обратите внимание, что если вы связались с третьей стороной .lib файл, вы должны использовать ту же версию VS, что они использовали для его компиляции. В противном случае вы в конечном итоге будете использовать две разные среды выполнения одновременно, что может вызвать проблемы. C++/CLI должен будет использовать управляемую совместимую среду выполнения, но это вряд ли вызовет проблемы, если версии совпадают.

Если вы используете Visual Studio 2013, вам нужна среда выполнения 2013, а не среда 2010.

Распространяемые пакеты Visual C++ для Visual Studio 2013

Другие вопросы по тегам