Как запустить проект с использованием сборки 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 на моей машине разработки и на тестовой машине и заметил, что некоторые пакеты отсутствуют. Поэтому я скачал и установил эти пакеты на тестовой машине:
- Распространяемый пакет Microsoft Visual C++ 2010 (x86)
- Распространяемый пакет Microsoft Visual C++ 2010 (x64)
И это не сработало. Затем я протестировал 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.